- 締切済み
【javaアプレット】マウスにリンクした雪だるまを回転させたい
【javaアプレット】マウスにリンクした雪だるまを回転させたい 現在、大小の丸2つで簡単に作った雪だるまをマウスにリンクすることができました。 マウスを右に動かせばそのまま雪だるまも右に動きます。 ここからがわかりません。 理想的には雪だるまは大きい丸を中心に回転させながらマウスの動かす方向に動く感じにしたいのです。 なにかアドバイスをください。 作ってるのに近いプログラム ↓ import java.applet.* ; import java.awt.*; import java.awt.event.*; public class test extends Applet { int posX = 50; int posY = 50; public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(posX, posY, 50, 50); } public void init () { this.setSize(200, 200); this.setVisible(true); addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { posX = e.getX(); posY = e.getY(); repaint(); } }); } }
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- toorisugari001
- ベストアンサー率80% (4/5)
public class test extends Applet { final double PI = 3.14; int posX = 50; int posY = 50; double yukiX = posX + 50; double yukiY = posY + 10; double radian = 0; Timer t = new Timer(); public void paint(Graphics g){ g.setColor(Color.black); g.drawOval(posX, posY, 50, 50); g.drawOval((int)yukiX, (int)yukiY, 30, 30); } public void init(){ this.setSize(200, 200); addMouseMotionListener(new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e) { posX = e.getX(); posY = e.getY(); yukiX = changeYukiX(); yukiY = changeYukiY(); repaint(); } }); t.schedule(new MyTimer(), 0, 30); } public class MyTimer extends TimerTask{ public void run(){ radian +=3; yukiX = changeYukiX(); yukiY = changeYukiY(); repaint(); } } public double changeYukiX(){ return posX + 25 - 15 + 40 * Math.cos(radian * PI / 180); } public double changeYukiY(){ return posY + 25 - 15 + 40 * Math.sin(radian * PI / 180); } } 三角比については前者さんの回答や学校の教科書などを読んでください。
- salsberry
- ベストアンサー率69% (495/711)
- e00083
- ベストアンサー率31% (25/80)
こうゆうこと?? import java.applet.* ; import java.awt.*; import java.awt.event.*; public class test extends Applet { int posX = 50; int posY = 50; int h=10; public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(posX-(h/20)-5, posY-(h/20)-5, 10+(h/10), 10+(h/10)); } public void init () { this.setSize(200, 200); this.setVisible(true); addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { posX = e.getX(); posY = e.getY(); h++; repaint(); } }); } }
- salsberry
- ベストアンサー率69% (495/711)
[A] 大きな丸の中心座標 [B] 大きな丸の半径 [C] 小さな丸の半径 [D] 大きな丸から見て小さな丸がどちらにあるか (角度) これらの値が決まれば、小さな丸の中心座標は三角関数を使って求められます。 [D]の角度をいつどのように変化させるかは質問者さんのお好きなように決めてください。
補足
回答ありがとうございます。 ん~ 理解できません。 ごめんなさい・・・(苦笑
補足
回答ありがとうございます。 しかし、私のイメージとだいぶ違います。 日本語下手でごめんなさい。 わかりやすく言うと・・・ 回転している雪だるまが画面上を動き回る感じ? 伝わりますかね?