teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Enemyクラスを追加(余談)

2017/05/09 17:26

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -21,4 +21,44 @@
21
21
  // disposeは不要なのでコメントアウト
22
22
  // g.dispose();
23
23
  }
24
+ ```
25
+ ---
26
+ ここからは余談です。
27
+ Enemyデータと表示(Gameplay)でクラスを2つに分割した方が、Gameplayクラスで持つフィールド変数を少なくすることができます。
28
+ 1, private Timer timer; の直後の行に以下の1行を追加
29
+ ```Java
30
+ private final Enemy enemy = new Enemy();
31
+ ```
32
+ 2, public void paintComponent(Graphics g) メソッド内のg.fillRect(enemyposX, 100, 50, 50);を変更
33
+ ```Java
34
+ g.fillRect(enemy.getPosX(), 100, 50, 50);
35
+ ```
36
+ 3, public void actionPerformed(ActionEvent e) メソッド内のmoveEnemy();を変更
37
+ ```Java
38
+ enemy.move();
39
+ ```
40
+ 4, Enemyクラスを追加。
41
+ ```Java
42
+ class Enemy {
43
+
44
+ private int enemyposX = 100;
45
+ private int enemyXdir = 5;
46
+ private int count = 0;
47
+ int getPosX() {
48
+ return enemyposX;
49
+ }
50
+ void move() {
51
+ count++;
52
+ if (count == 10) {
53
+ if (enemyposX > 445 || enemyposX < 0) {
54
+ enemyXdir = -enemyXdir;
55
+ enemyposX += enemyXdir;
56
+ }
57
+ if (enemyposX <= 445 || enemyposX >= 0) {
58
+ enemyposX += enemyXdir;
59
+ }
60
+ count = 0;
61
+ }
62
+ }
63
+ }
24
64
  ```

1

disposeをコメントアウト

2017/05/09 17:26

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -18,7 +18,7 @@
18
18
  System.out.println(ex);
19
19
  }
20
20
  g.drawImage(imgfighter, fighterposX, 800, this);
21
-
21
+ // disposeは不要なのでコメントアウト
22
- g.dispose();
22
+ // g.dispose();
23
23
  }
24
24
  ```