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

回答編集履歴

2

訂正

2015/06/02 11:01

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -9,8 +9,7 @@
9
9
  public void mouseDragged(MouseEvent e){
10
10
  int size = kame[0].points.size() - 1;
11
11
  Point p_0 = kame[0].points.get(size);
12
- // current_xとcurrent_yはe.getXとe.getYの間違いかな…?
13
- if(e.getX() >= p_0.x && e.getX() <= p_0.x+68 && e.getY() >= p_0.y && e.getY() <= p_0.y + 48){
12
+ if(current_x >= p_0.x && current_x <= p_0.x+68 && current_y >= p_0.y && current_y <= p_0.y + 48){
14
13
  current_x = e.getX();
15
14
  current_y = e.getY();
16
15
 

1

追記

2015/06/02 11:01

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -1,3 +1,50 @@
1
+ 変更点は2つです。
2
+ 描画と亀の動きを弄るところを分けました。
3
+
4
+ mouseDraggedで亀を移動させる時、他の亀の移動も処理しています。
5
+ paintメソッドでは描画のみを実行しています。
6
+
7
+ ```lang-java
8
+ public class Rabbit extends Applet implements MouseListener, MouseMotionListener{
9
+ public void mouseDragged(MouseEvent e){
10
+ int size = kame[0].points.size() - 1;
11
+ Point p_0 = kame[0].points.get(size);
12
+ // current_xとcurrent_yはe.getXとe.getYの間違いかな…?
13
+ if(e.getX() >= p_0.x && e.getX() <= p_0.x+68 && e.getY() >= p_0.y && e.getY() <= p_0.y + 48){
14
+ current_x = e.getX();
15
+ current_y = e.getY();
16
+
17
+ kame[0].points.add(new Point(current_x, current_y));
18
+ // 他の亀はドラッグにあわせて動くので、ここで座標も弄りましょう
19
+ Point p_cur = kame[0].points.get(kame[0].points.size() - 1);
20
+ Point p_prev = kame[0].points.get(kame[0].points.size() - 2);
21
+ double dx = p_cur.x - p_prev.x;
22
+ double dy = p_cur.y - p_prev.y;
23
+ Usagi.move(dx, dy); // 他の亀の移動
24
+
25
+ repaint();
26
+ }
27
+ }
28
+
29
+ public void paint(Graphics g){
30
+ // 描画に関することだけやります
31
+ for(int i = 0; i < 4; i++){
32
+ int size = kame[i].points.size() - 1;
33
+ g.drawImage(imgs, kame[i].points.get(size).x, kame[i].points.get(size).y,this);
34
+ }
35
+ g.setColor(Color.black);
36
+ Usagi.paint(g);
37
+ }
38
+ }
39
+ ```
40
+
41
+ 先ほど見せていただいた修正後のコードを見たのですが、どこで実行時エラーがでているかまではちょっとわかりませんでした。
42
+ 動きも予想で書いているのでチグハグなところがあるかもしれません。
43
+
44
+
45
+ ---
46
+ 旧回答
47
+
1
48
  これは…まとめて質問に答えるのはたぶん難しいので気づいたところだけ。
2
49
 
3
50
  > 右下にしか亀が動かなかったりします。