質問編集履歴

7

修正

2021/05/29 11:43

投稿

cretter
cretter

スコア91

test CHANGED
File without changes
test CHANGED
@@ -32,520 +32,6 @@
32
32
 
33
33
  ```java
34
34
 
35
- import javax.swing.*;
36
-
37
- import java.awt.*;
38
-
39
- import java.awt.event.*;
40
-
41
- import java.io.*;
42
-
43
- public class Main{
44
-
45
- public static void main(String[] args){
46
-
47
- Game cl = new Game("01");
48
-
49
- cl.setVisible(true);
50
-
51
- try{
52
-
53
- int fps=60;
54
-
55
- while(true){
56
-
57
- long s_Time = System.currentTimeMillis();//計測開始
58
-
59
-
60
-
61
- cl.move();
62
-
63
- cl.changeIcon();
64
-
65
- //cl.repaint();
66
-
67
-
68
-
69
- long e_Time = System.currentTimeMillis();//計測終了
70
-
71
-
72
-
73
- try{
74
-
75
- Thread.sleep(1000/fps-(e_Time-s_Time));
76
-
77
- }catch(Exception a){
78
-
79
- System.out.println("<Error>"+fps+"fpsの許容範囲を超えています ["+(1000/fps-(e_Time-s_Time))+"ms必要]");
80
-
81
- }
82
-
83
- }
84
-
85
- }catch(Exception e){
86
-
87
- //エラー処理
88
-
89
- }
90
-
91
- }
92
-
93
- }
94
-
95
- class Game extends JFrame implements KeyListener{
96
-
97
- final int stage_x=25,stage_y=16;//ステージの広さ
98
-
99
- final int size=32;//標準サイズ
100
-
101
- final int speed=16;//size/speedが本来のスピード
102
-
103
- int dashCount=0;
104
-
105
- int x=12,y=4,z;//開始座標
106
-
107
- int swing_x=x*size,swing_y=y*size;//開始地点
108
-
109
- int baitCount=0;//餌を食べた数
110
-
111
- JPanel p_chara,board;
112
-
113
- JLabel l_chara;
114
-
115
- ImageIcon chara_icon[] = new ImageIcon[17];
116
-
117
- boolean[][] material_ids = new boolean[stage_x][stage_y];
118
-
119
- JPanel[][] bait = new JPanel[stage_x][stage_y];
120
-
121
-
122
-
123
- /*実験*/
124
-
125
- String[][] image_ids = new String[stage_x][stage_y];
126
-
127
- String[] image_ids_line = new String[stage_y];
128
-
129
- String[] material_ids_line = new String[stage_y];
130
-
131
- ImageIcon[][] images = new ImageIcon[stage_x][stage_y];
132
-
133
- ImageIcon[] bait_icon = new ImageIcon[2];
134
-
135
- JPanel[][] p_box = new JPanel[stage_x][stage_y];
136
-
137
- JLabel[][] l_box = new JLabel[stage_x][stage_y];
138
-
139
-
140
-
141
-
142
-
143
- boolean life=true;//ゲーム続行
144
-
145
- Game(String stage_id){
146
-
147
- setTitle("ゲーム画面");
148
-
149
- setSize(size*stage_x+14,size*stage_y+37);//64*9+14,64*7+37
150
-
151
- setResizable(false);
152
-
153
- setLocationRelativeTo(null);
154
-
155
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
156
-
157
- setLayout(null);
158
-
159
-
160
-
161
- try{
162
-
163
- BufferedReader bufferedReader1 = new BufferedReader(new FileReader("見せられないよ"));
164
-
165
- BufferedReader bufferedReader2 = new BufferedReader(new FileReader("見せられないよ"));
166
-
167
- for(int i=0;i<stage_y;i++){
168
-
169
- image_ids_line[i] = bufferedReader1.readLine();
170
-
171
- material_ids_line[i] = bufferedReader2.readLine();
172
-
173
- }
174
-
175
- bufferedReader1.close();
176
-
177
- bufferedReader2.close();
178
-
179
- for(int bi=0;bi<stage_y;bi++){
180
-
181
- for(int i=0;i<stage_x;i++){
182
-
183
- image_ids[i][bi]=String.valueOf(image_ids_line[bi].charAt(i));
184
-
185
- if(material_ids_line[bi].charAt(i)=='0'){
186
-
187
- material_ids[i][bi]=false;
188
-
189
- }else{
190
-
191
- material_ids[i][bi]=true;
192
-
193
- }
194
-
195
- }
196
-
197
- }
198
-
199
- }catch(Exception e){
200
-
201
- //エラー
202
-
203
- }
204
-
205
-
206
-
207
- for(int bi=0;bi<stage_y;bi++){
208
-
209
- for(int i=0;i<stage_x;i++){
210
-
211
- images[i][bi] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(size,size,Image.SCALE_DEFAULT));
212
-
213
- }
214
-
215
- }
216
-
217
-
218
-
219
- //キャラクター読み込み
220
-
221
- for(int i=0;i<17;i++){
222
-
223
- chara_icon[i] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(size,size,Image.SCALE_DEFAULT));
224
-
225
- }
226
-
227
-
228
-
229
- board = new JPanel();
230
-
231
- board.setLayout(new GridLayout(stage_y,stage_x));
232
-
233
- board.setBounds(0,0,stage_x*size,stage_y*size);
234
-
235
-
236
-
237
- p_chara = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
238
-
239
- l_chara = new JLabel();
240
-
241
- p_chara.setBounds(swing_x,swing_y,size,size);//キャラクター
242
-
243
- l_chara.setIcon(chara_icon[0]);
244
-
245
- p_chara.setOpaque(false);
246
-
247
-
248
-
249
- p_chara.add(l_chara);
250
-
251
- add(p_chara);
252
-
253
-
254
-
255
- //エサ
256
-
257
- for(int i=0;i<2;i++){
258
-
259
- bait_icon[i] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(32,32,Image.SCALE_DEFAULT));
260
-
261
- }
262
-
263
-
264
-
265
- //Seed cl1 = new Seed(0,32,icon);
266
-
267
-
268
-
269
-
270
-
271
- //ステージ
272
-
273
- for(int bi=0;bi<stage_y;bi++){
274
-
275
- for(int i=0;i<stage_x;i++){
276
-
277
- p_box[i][bi] = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));//FlowLayoutはデフォルトで、コンポーネント間に5px?隙間を開けるから
278
-
279
- l_box[i][bi] = new JLabel(images[i][bi]);
280
-
281
- if(material_ids[i][bi]&&!(i>=11&&i<=13&&bi>=6&&bi<=8)){
282
-
283
- int bait_c;
284
-
285
- if((i==1||i==stage_x-2)&&(bi==1||bi==stage_y-2)){
286
-
287
- bait_c=1;
288
-
289
- }else{
290
-
291
- bait_c=0;
292
-
293
- }
294
-
295
- bait[i][bi] = new Bait(bait_c,size,bait_icon,i,bi);
296
-
297
- add(bait[i][bi]);
298
-
299
- }else{
300
-
301
- bait[i][bi] = null;
302
-
303
- }
304
-
305
- p_box[i][bi].add(l_box[i][bi]);
306
-
307
- //p_box[i][bi].setBorder(new LineBorder(Color.BLACK));
308
-
309
- board.add(p_box[i][bi]);
310
-
311
- }
312
-
313
- }
314
-
315
- add(board);
316
-
317
-
318
-
319
- addKeyListener(this);
320
-
321
- }
322
-
323
- @Override
324
-
325
- public void keyTyped(KeyEvent e){/*何かのキー(aなど)を押した場合の処理*/}
326
-
327
-
328
-
329
- int mx,my;//move_x,y
330
-
331
- int gx,gy;//go_x,y
332
-
333
- int noCourse,course;//主人公のの向き
334
-
335
- boolean dash=false;
336
-
337
-
338
-
339
- @Override
340
-
341
- public void keyPressed(KeyEvent e){/*キーを入力した際の処理*/
342
-
343
- switch(e.getKeyCode()){
344
-
345
- case KeyEvent.VK_UP://上キー 上移動
346
-
347
- mx=0;
348
-
349
- my=-1;
350
-
351
- noCourse=1;
352
-
353
- break;
354
-
355
- case KeyEvent.VK_DOWN://下キー 下移動
356
-
357
- mx=0;
358
-
359
- my=1;
360
-
361
- noCourse=3;
362
-
363
- break;
364
-
365
- case KeyEvent.VK_LEFT://左キー 左移動
366
-
367
- mx=-1;
368
-
369
- my=0;
370
-
371
- noCourse=0;
372
-
373
- break;
374
-
375
- case KeyEvent.VK_RIGHT://右キー 右移動
376
-
377
- mx=1;
378
-
379
- my=0;
380
-
381
- noCourse=2;
382
-
383
- break;
384
-
385
- }
386
-
387
- }
388
-
389
- @Override
390
-
391
- public void keyReleased(KeyEvent e){}
392
-
393
-
394
-
395
- boolean go=true;
396
-
397
- void move(){
398
-
399
- //if(!life) return;
400
-
401
- if(go){
402
-
403
- go=false;
404
-
405
- if(material_ids[swing_x/size+mx][swing_y/size+my]){//行動選択
406
-
407
- gx=mx*size/speed;
408
-
409
- gy=my*size/speed;
410
-
411
- course=noCourse;
412
-
413
- }else{
414
-
415
- if(material_ids[swing_x/size+gx*speed/size][swing_y/size+gy*speed/size]){//正面突破回避
416
-
417
- go=false;
418
-
419
- }else{
420
-
421
- go=true;
422
-
423
- }
424
-
425
- }
426
-
427
- }else{
428
-
429
- if(swing_x%(size/8)==0 && swing_y%(size/8)==0 && dash){
430
-
431
- dashCount++;
432
-
433
- swing_x+=gx*2;
434
-
435
- swing_y+=gy*2;
436
-
437
- if(dashCount==330){
438
-
439
- dash=false;
440
-
441
- }
442
-
443
- }else{
444
-
445
- swing_x+=gx;
446
-
447
- swing_y+=gy;
448
-
449
- }
450
-
451
- p_chara.setLocation(swing_x,swing_y);
452
-
453
-
454
-
455
- if(swing_x%size==0&&swing_y%size==0 || ((mx+gx*speed/size)==0 && (my+gy*speed/size)==0)){
456
-
457
- if(bait[swing_x/size][swing_y/size]!=null){
458
-
459
- bait[swing_x/size][swing_y/size].removeAll();
460
-
461
- bait[swing_x/size][swing_y/size]=null;
462
-
463
- baitCount++;
464
-
465
- if(baitCount==199){
466
-
467
- System.out.println("Game Clear");
468
-
469
- }
470
-
471
- if((swing_x/size==1||swing_x/size==stage_x-2)&&(swing_y/size==1||swing_y/size==stage_y-2)){
472
-
473
- dashCount=0;
474
-
475
- dash=true;
476
-
477
- }
478
-
479
- }
480
-
481
- go=true;
482
-
483
- }
484
-
485
- }
486
-
487
- }
488
-
489
- int charaCount=0;
490
-
491
- boolean charaUp=true;
492
-
493
- void changeIcon(){
494
-
495
- if(charaUp){
496
-
497
- charaCount++;
498
-
499
- if(charaCount==4){
500
-
501
- charaUp=false;
502
-
503
- }
504
-
505
- }else{
506
-
507
- charaCount--;
508
-
509
- if(charaCount==0){
510
-
511
- charaUp=true;
512
-
513
- l_chara.setIcon(chara_icon[charaCount]);
514
-
515
- return;
516
-
517
- }
518
-
519
- }
520
-
521
- l_chara.setIcon(chara_icon[charaCount+course*4]);
522
-
523
- }
524
-
525
- }
526
-
527
- class Bait extends JPanel{
528
-
529
- Bait(int big,int size,ImageIcon[] icon,int x,int y){
530
-
531
- setSize(size,size);
532
-
533
- setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
534
-
535
- setOpaque(false);//背景を透過する
536
-
537
- JLabel label = new JLabel();
538
-
539
- label.setIcon(icon[big]);
540
-
541
- setLocation(x*size,y*size);
542
-
543
- add(label);
544
-
545
- }
546
-
547
- }
548
-
549
35
  ```
550
36
 
551
37
 

6

修正

2021/05/29 11:43

投稿

cretter
cretter

スコア91

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,12 @@
22
22
 
23
23
 
24
24
 
25
+ 追伸:
26
+
27
+ もしわからなければ解決方法は書かなくてもいいので、なぜたまにエラーが起きるのか教えてください。
28
+
29
+
30
+
25
31
  ###ソースコード
26
32
 
27
33
  ```java

5

修正

2021/05/26 22:42

投稿

cretter
cretter

スコア91

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ~~普段と同じくjavaのプログラミングをしていたところ`javac 〇〇.java`と打ってコンパイルして`java 〇〇`で実行していた時でした。実行したときに`Exception in thread "AWT-EventQueue-0"`とエラーが出てきて何がおかしいのかコードを見返してみたのですが、なにもおかしいことはありませんでした。そして何も変更せずもう一度コンパイルし、実行してみるとエラーは発生しませんでした。不思議に思って、もう一度何も変更せずコンパイルし、それを実行してみると次はまたエラーが発生していました。こんな感じにコンパイルするたびに結果が変わるのでなぜこのようなことが起きているのか教えてください。
3
+ ~~普段と同じくjavaのプログラミングをしていたところ(パックマンを作ろうとしていました。)`javac 〇〇.java`と打ってコンパイルして`java 〇〇`で実行していた時でした。実行したときに`Exception in thread "AWT-EventQueue-0"`とエラーが出てきて何がおかしいのかコードを見返してみたのですが、なにもおかしいことはありませんでした。そして何も変更せずもう一度コンパイルし、実行してみるとエラーは発生しませんでした。不思議に思って、もう一度何も変更せずコンパイルし、それを実行してみると次はまたエラーが発生していました。こんな感じにコンパイルするたびに結果が変わるのでなぜこのようなことが起きているのか教えてください。
4
4
 
5
5
  直し方も教えてくれると幸いです。~~
6
6
 

4

修正

2021/05/26 14:28

投稿

cretter
cretter

スコア91

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 普段と同じくjavaのプログラミングをしていたところ`javac 〇〇.java`と打ってコンパイルして`java 〇〇`で実行していた時でした。実行したときに`Exception in thread "AWT-EventQueue-0"`とエラーが出てきて何がおかしいのかコードを見返してみたのですが、なにもおかしいことはありませんでした。そして何も変更せずもう一度コンパイルし、実行してみるとエラーは発生しませんでした。不思議に思って、もう一度何も変更せずコンパイルし、それを実行してみると次はまたエラーが発生していました。こんな感じにコンパイルするたびに結果が変わるのでなぜこのようなことが起きているのか教えてください。
4
-
5
- 直し方も教えてくれると幸いです。
3
+ ~~普段と同じくjavaのプログラミングをしていたところ`javac 〇〇.java`と打ってコンパイルして`java 〇〇`で実行していた時でした。実行したときに`Exception in thread "AWT-EventQueue-0"`とエラーが出てきて何がおかしいのかコードを見返してみたのですが、なにもおかしいことはありませんでした。そして何も変更せずもう一度コンパイルし、実行してみるとエラーは発生しませんでした。不思議に思って、もう一度何も変更せずコンパイルし、それを実行してみると次はまたエラーが発生していました。こんな感じにコンパイルするたびに結果が変わるのでなぜこのようなことが起きているのか教えてください。
4
+
5
+ 直し方も教えてくれると幸いです。~~
6
6
 
7
7
  コードが汚いのは許してください。
8
8
 

3

ソースコードを追加しました。

2021/05/26 09:13

投稿

cretter
cretter

スコア91

test CHANGED
@@ -1 +1 @@
1
- 実行するたびに結果が変わ
1
+ 実行するたびに結果が変わってしまう
test CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  直し方も教えてくれると幸いです。
6
6
 
7
+ コードが汚いのは許してください。
8
+
7
9
 
8
10
 
9
11
  追伸:
@@ -20,6 +22,528 @@
20
22
 
21
23
 
22
24
 
25
+ ###ソースコード
26
+
27
+ ```java
28
+
29
+ import javax.swing.*;
30
+
31
+ import java.awt.*;
32
+
33
+ import java.awt.event.*;
34
+
35
+ import java.io.*;
36
+
37
+ public class Main{
38
+
39
+ public static void main(String[] args){
40
+
41
+ Game cl = new Game("01");
42
+
43
+ cl.setVisible(true);
44
+
45
+ try{
46
+
47
+ int fps=60;
48
+
49
+ while(true){
50
+
51
+ long s_Time = System.currentTimeMillis();//計測開始
52
+
53
+
54
+
55
+ cl.move();
56
+
57
+ cl.changeIcon();
58
+
59
+ //cl.repaint();
60
+
61
+
62
+
63
+ long e_Time = System.currentTimeMillis();//計測終了
64
+
65
+
66
+
67
+ try{
68
+
69
+ Thread.sleep(1000/fps-(e_Time-s_Time));
70
+
71
+ }catch(Exception a){
72
+
73
+ System.out.println("<Error>"+fps+"fpsの許容範囲を超えています ["+(1000/fps-(e_Time-s_Time))+"ms必要]");
74
+
75
+ }
76
+
77
+ }
78
+
79
+ }catch(Exception e){
80
+
81
+ //エラー処理
82
+
83
+ }
84
+
85
+ }
86
+
87
+ }
88
+
89
+ class Game extends JFrame implements KeyListener{
90
+
91
+ final int stage_x=25,stage_y=16;//ステージの広さ
92
+
93
+ final int size=32;//標準サイズ
94
+
95
+ final int speed=16;//size/speedが本来のスピード
96
+
97
+ int dashCount=0;
98
+
99
+ int x=12,y=4,z;//開始座標
100
+
101
+ int swing_x=x*size,swing_y=y*size;//開始地点
102
+
103
+ int baitCount=0;//餌を食べた数
104
+
105
+ JPanel p_chara,board;
106
+
107
+ JLabel l_chara;
108
+
109
+ ImageIcon chara_icon[] = new ImageIcon[17];
110
+
111
+ boolean[][] material_ids = new boolean[stage_x][stage_y];
112
+
113
+ JPanel[][] bait = new JPanel[stage_x][stage_y];
114
+
115
+
116
+
117
+ /*実験*/
118
+
119
+ String[][] image_ids = new String[stage_x][stage_y];
120
+
121
+ String[] image_ids_line = new String[stage_y];
122
+
123
+ String[] material_ids_line = new String[stage_y];
124
+
125
+ ImageIcon[][] images = new ImageIcon[stage_x][stage_y];
126
+
127
+ ImageIcon[] bait_icon = new ImageIcon[2];
128
+
129
+ JPanel[][] p_box = new JPanel[stage_x][stage_y];
130
+
131
+ JLabel[][] l_box = new JLabel[stage_x][stage_y];
132
+
133
+
134
+
135
+
136
+
137
+ boolean life=true;//ゲーム続行
138
+
139
+ Game(String stage_id){
140
+
141
+ setTitle("ゲーム画面");
142
+
143
+ setSize(size*stage_x+14,size*stage_y+37);//64*9+14,64*7+37
144
+
145
+ setResizable(false);
146
+
147
+ setLocationRelativeTo(null);
148
+
149
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
150
+
151
+ setLayout(null);
152
+
153
+
154
+
155
+ try{
156
+
157
+ BufferedReader bufferedReader1 = new BufferedReader(new FileReader("見せられないよ"));
158
+
159
+ BufferedReader bufferedReader2 = new BufferedReader(new FileReader("見せられないよ"));
160
+
161
+ for(int i=0;i<stage_y;i++){
162
+
163
+ image_ids_line[i] = bufferedReader1.readLine();
164
+
165
+ material_ids_line[i] = bufferedReader2.readLine();
166
+
167
+ }
168
+
169
+ bufferedReader1.close();
170
+
171
+ bufferedReader2.close();
172
+
173
+ for(int bi=0;bi<stage_y;bi++){
174
+
175
+ for(int i=0;i<stage_x;i++){
176
+
177
+ image_ids[i][bi]=String.valueOf(image_ids_line[bi].charAt(i));
178
+
179
+ if(material_ids_line[bi].charAt(i)=='0'){
180
+
181
+ material_ids[i][bi]=false;
182
+
183
+ }else{
184
+
185
+ material_ids[i][bi]=true;
186
+
187
+ }
188
+
189
+ }
190
+
191
+ }
192
+
193
+ }catch(Exception e){
194
+
195
+ //エラー
196
+
197
+ }
198
+
199
+
200
+
201
+ for(int bi=0;bi<stage_y;bi++){
202
+
203
+ for(int i=0;i<stage_x;i++){
204
+
205
+ images[i][bi] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(size,size,Image.SCALE_DEFAULT));
206
+
207
+ }
208
+
209
+ }
210
+
211
+
212
+
213
+ //キャラクター読み込み
214
+
215
+ for(int i=0;i<17;i++){
216
+
217
+ chara_icon[i] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(size,size,Image.SCALE_DEFAULT));
218
+
219
+ }
220
+
221
+
222
+
223
+ board = new JPanel();
224
+
225
+ board.setLayout(new GridLayout(stage_y,stage_x));
226
+
227
+ board.setBounds(0,0,stage_x*size,stage_y*size);
228
+
229
+
230
+
231
+ p_chara = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
232
+
233
+ l_chara = new JLabel();
234
+
235
+ p_chara.setBounds(swing_x,swing_y,size,size);//キャラクター
236
+
237
+ l_chara.setIcon(chara_icon[0]);
238
+
239
+ p_chara.setOpaque(false);
240
+
241
+
242
+
243
+ p_chara.add(l_chara);
244
+
245
+ add(p_chara);
246
+
247
+
248
+
249
+ //エサ
250
+
251
+ for(int i=0;i<2;i++){
252
+
253
+ bait_icon[i] = new ImageIcon(new ImageIcon("見せられないよ").getImage().getScaledInstance(32,32,Image.SCALE_DEFAULT));
254
+
255
+ }
256
+
257
+
258
+
259
+ //Seed cl1 = new Seed(0,32,icon);
260
+
261
+
262
+
263
+
264
+
265
+ //ステージ
266
+
267
+ for(int bi=0;bi<stage_y;bi++){
268
+
269
+ for(int i=0;i<stage_x;i++){
270
+
271
+ p_box[i][bi] = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));//FlowLayoutはデフォルトで、コンポーネント間に5px?隙間を開けるから
272
+
273
+ l_box[i][bi] = new JLabel(images[i][bi]);
274
+
275
+ if(material_ids[i][bi]&&!(i>=11&&i<=13&&bi>=6&&bi<=8)){
276
+
277
+ int bait_c;
278
+
279
+ if((i==1||i==stage_x-2)&&(bi==1||bi==stage_y-2)){
280
+
281
+ bait_c=1;
282
+
283
+ }else{
284
+
285
+ bait_c=0;
286
+
287
+ }
288
+
289
+ bait[i][bi] = new Bait(bait_c,size,bait_icon,i,bi);
290
+
291
+ add(bait[i][bi]);
292
+
293
+ }else{
294
+
295
+ bait[i][bi] = null;
296
+
297
+ }
298
+
299
+ p_box[i][bi].add(l_box[i][bi]);
300
+
301
+ //p_box[i][bi].setBorder(new LineBorder(Color.BLACK));
302
+
303
+ board.add(p_box[i][bi]);
304
+
305
+ }
306
+
307
+ }
308
+
309
+ add(board);
310
+
311
+
312
+
313
+ addKeyListener(this);
314
+
315
+ }
316
+
317
+ @Override
318
+
319
+ public void keyTyped(KeyEvent e){/*何かのキー(aなど)を押した場合の処理*/}
320
+
321
+
322
+
323
+ int mx,my;//move_x,y
324
+
325
+ int gx,gy;//go_x,y
326
+
327
+ int noCourse,course;//主人公のの向き
328
+
329
+ boolean dash=false;
330
+
331
+
332
+
333
+ @Override
334
+
335
+ public void keyPressed(KeyEvent e){/*キーを入力した際の処理*/
336
+
337
+ switch(e.getKeyCode()){
338
+
339
+ case KeyEvent.VK_UP://上キー 上移動
340
+
341
+ mx=0;
342
+
343
+ my=-1;
344
+
345
+ noCourse=1;
346
+
347
+ break;
348
+
349
+ case KeyEvent.VK_DOWN://下キー 下移動
350
+
351
+ mx=0;
352
+
353
+ my=1;
354
+
355
+ noCourse=3;
356
+
357
+ break;
358
+
359
+ case KeyEvent.VK_LEFT://左キー 左移動
360
+
361
+ mx=-1;
362
+
363
+ my=0;
364
+
365
+ noCourse=0;
366
+
367
+ break;
368
+
369
+ case KeyEvent.VK_RIGHT://右キー 右移動
370
+
371
+ mx=1;
372
+
373
+ my=0;
374
+
375
+ noCourse=2;
376
+
377
+ break;
378
+
379
+ }
380
+
381
+ }
382
+
383
+ @Override
384
+
385
+ public void keyReleased(KeyEvent e){}
386
+
387
+
388
+
389
+ boolean go=true;
390
+
391
+ void move(){
392
+
393
+ //if(!life) return;
394
+
395
+ if(go){
396
+
397
+ go=false;
398
+
399
+ if(material_ids[swing_x/size+mx][swing_y/size+my]){//行動選択
400
+
401
+ gx=mx*size/speed;
402
+
403
+ gy=my*size/speed;
404
+
405
+ course=noCourse;
406
+
407
+ }else{
408
+
409
+ if(material_ids[swing_x/size+gx*speed/size][swing_y/size+gy*speed/size]){//正面突破回避
410
+
411
+ go=false;
412
+
413
+ }else{
414
+
415
+ go=true;
416
+
417
+ }
418
+
419
+ }
420
+
421
+ }else{
422
+
423
+ if(swing_x%(size/8)==0 && swing_y%(size/8)==0 && dash){
424
+
425
+ dashCount++;
426
+
427
+ swing_x+=gx*2;
428
+
429
+ swing_y+=gy*2;
430
+
431
+ if(dashCount==330){
432
+
433
+ dash=false;
434
+
435
+ }
436
+
437
+ }else{
438
+
439
+ swing_x+=gx;
440
+
441
+ swing_y+=gy;
442
+
443
+ }
444
+
445
+ p_chara.setLocation(swing_x,swing_y);
446
+
447
+
448
+
449
+ if(swing_x%size==0&&swing_y%size==0 || ((mx+gx*speed/size)==0 && (my+gy*speed/size)==0)){
450
+
451
+ if(bait[swing_x/size][swing_y/size]!=null){
452
+
453
+ bait[swing_x/size][swing_y/size].removeAll();
454
+
455
+ bait[swing_x/size][swing_y/size]=null;
456
+
457
+ baitCount++;
458
+
459
+ if(baitCount==199){
460
+
461
+ System.out.println("Game Clear");
462
+
463
+ }
464
+
465
+ if((swing_x/size==1||swing_x/size==stage_x-2)&&(swing_y/size==1||swing_y/size==stage_y-2)){
466
+
467
+ dashCount=0;
468
+
469
+ dash=true;
470
+
471
+ }
472
+
473
+ }
474
+
475
+ go=true;
476
+
477
+ }
478
+
479
+ }
480
+
481
+ }
482
+
483
+ int charaCount=0;
484
+
485
+ boolean charaUp=true;
486
+
487
+ void changeIcon(){
488
+
489
+ if(charaUp){
490
+
491
+ charaCount++;
492
+
493
+ if(charaCount==4){
494
+
495
+ charaUp=false;
496
+
497
+ }
498
+
499
+ }else{
500
+
501
+ charaCount--;
502
+
503
+ if(charaCount==0){
504
+
505
+ charaUp=true;
506
+
507
+ l_chara.setIcon(chara_icon[charaCount]);
508
+
509
+ return;
510
+
511
+ }
512
+
513
+ }
514
+
515
+ l_chara.setIcon(chara_icon[charaCount+course*4]);
516
+
517
+ }
518
+
519
+ }
520
+
521
+ class Bait extends JPanel{
522
+
523
+ Bait(int big,int size,ImageIcon[] icon,int x,int y){
524
+
525
+ setSize(size,size);
526
+
527
+ setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
528
+
529
+ setOpaque(false);//背景を透過する
530
+
531
+ JLabel label = new JLabel();
532
+
533
+ label.setIcon(icon[big]);
534
+
535
+ setLocation(x*size,y*size);
536
+
537
+ add(label);
538
+
539
+ }
540
+
541
+ }
542
+
543
+ ```
544
+
545
+
546
+
23
547
  ### 発生している問題・エラーメッセージ
24
548
 
25
549
 
@@ -32,91 +556,7 @@
32
556
 
33
557
  at java.desktop/javax.swing.LayoutComparator.compare(LayoutComparator.java:76)
34
558
 
35
- at java.desktop/javax.swing.LayoutComparator.compare(LayoutComparator.java:42)
36
-
37
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.mergeSort(SortingFocusTraversalPolicy.java:678)
38
-
39
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.mergeSort(SortingFocusTraversalPolicy.java:666)
40
-
41
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.legacySort(SortingFocusTraversalPolicy.java:163)
42
-
43
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:152)
44
-
45
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:125)
46
-
47
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:478)
48
-
49
- at java.desktop/javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:167)
50
-
51
- at java.desktop/javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:571)
52
-
53
- at java.desktop/java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:174)
54
-
55
- at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:486)
56
-
57
- at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4874)
58
-
59
- at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2322)
60
-
61
- at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
62
-
63
- at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825)
64
-
65
- at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
66
-
67
- at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
559
+ /*あまりに長く、入力できる限界まで来たのでカット*/
68
-
69
- at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
70
-
71
- at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
72
-
73
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
74
-
75
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
76
-
77
- at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
78
-
79
- at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
80
-
81
- at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
82
-
83
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
84
-
85
- at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
86
-
87
- at java.desktop/java.awt.SequencedEvent.dispatch(SequencedEvent.java:204)
88
-
89
- at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
90
-
91
- at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
92
-
93
- at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
94
-
95
- at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
96
-
97
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
98
-
99
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
100
-
101
- at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
102
-
103
- at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
104
-
105
- at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
106
-
107
- at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
108
-
109
- at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
110
-
111
- at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
112
-
113
- at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
114
-
115
- at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
116
-
117
- at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
118
-
119
- at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
120
560
 
121
561
  at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
122
562
 

2

情報を修正しました。

2021/05/24 14:36

投稿

cretter
cretter

スコア91

test CHANGED
@@ -1 +1 @@
1
- コンパイルを二回するとエラー
1
+ 実行するたびに結果変わ
test CHANGED
@@ -9,6 +9,14 @@
9
9
  追伸:
10
10
 
11
11
  コンパイルされているものを削除してから再度コンパイルしたものを実行するとエラーが出にくいです。
12
+
13
+
14
+
15
+ 追伸:
16
+
17
+ コンパイルが原因ではなさそうです。
18
+
19
+ `java 〇〇`と、実行するたびに変わっていました。
12
20
 
13
21
 
14
22
 

1

新しい情報を加えました。

2021/05/24 12:27

投稿

cretter
cretter

スコア91

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
  普段と同じくjavaのプログラミングをしていたところ`javac 〇〇.java`と打ってコンパイルして`java 〇〇`で実行していた時でした。実行したときに`Exception in thread "AWT-EventQueue-0"`とエラーが出てきて何がおかしいのかコードを見返してみたのですが、なにもおかしいことはありませんでした。そして何も変更せずもう一度コンパイルし、実行してみるとエラーは発生しませんでした。不思議に思って、もう一度何も変更せずコンパイルし、それを実行してみると次はまたエラーが発生していました。こんな感じにコンパイルするたびに結果が変わるのでなぜこのようなことが起きているのか教えてください。
4
4
 
5
5
  直し方も教えてくれると幸いです。
6
+
7
+
8
+
9
+ 追伸:
10
+
11
+ コンパイルされているものを削除してから再度コンパイルしたものを実行するとエラーが出にくいです。
6
12
 
7
13
 
8
14