回答編集履歴

2

Enemyクラスを追加(余談)

2017/05/09 17:26

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -45,3 +45,83 @@
45
45
  }
46
46
 
47
47
  ```
48
+
49
+ ---
50
+
51
+ ここからは余談です。
52
+
53
+ Enemyデータと表示(Gameplay)でクラスを2つに分割した方が、Gameplayクラスで持つフィールド変数を少なくすることができます。
54
+
55
+ 1, private Timer timer; の直後の行に以下の1行を追加
56
+
57
+ ```Java
58
+
59
+ private final Enemy enemy = new Enemy();
60
+
61
+ ```
62
+
63
+ 2, public void paintComponent(Graphics g) メソッド内のg.fillRect(enemyposX, 100, 50, 50);を変更
64
+
65
+ ```Java
66
+
67
+ g.fillRect(enemy.getPosX(), 100, 50, 50);
68
+
69
+ ```
70
+
71
+ 3, public void actionPerformed(ActionEvent e) メソッド内のmoveEnemy();を変更
72
+
73
+ ```Java
74
+
75
+ enemy.move();
76
+
77
+ ```
78
+
79
+ 4, Enemyクラスを追加。
80
+
81
+ ```Java
82
+
83
+ class Enemy {
84
+
85
+
86
+
87
+ private int enemyposX = 100;
88
+
89
+ private int enemyXdir = 5;
90
+
91
+ private int count = 0;
92
+
93
+ int getPosX() {
94
+
95
+ return enemyposX;
96
+
97
+ }
98
+
99
+ void move() {
100
+
101
+ count++;
102
+
103
+ if (count == 10) {
104
+
105
+ if (enemyposX > 445 || enemyposX < 0) {
106
+
107
+ enemyXdir = -enemyXdir;
108
+
109
+ enemyposX += enemyXdir;
110
+
111
+ }
112
+
113
+ if (enemyposX <= 445 || enemyposX >= 0) {
114
+
115
+ enemyposX += enemyXdir;
116
+
117
+ }
118
+
119
+ count = 0;
120
+
121
+ }
122
+
123
+ }
124
+
125
+ }
126
+
127
+ ```

1

disposeをコメントアウト

2017/05/09 17:26

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -38,9 +38,9 @@
38
38
 
39
39
  g.drawImage(imgfighter, fighterposX, 800, this);
40
40
 
41
+ // disposeは不要なのでコメントアウト
41
42
 
42
-
43
- g.dispose();
43
+ // g.dispose();
44
44
 
45
45
  }
46
46