import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; /** *プレイヤークラス<p> *移動処理、描画処理など */ public class Player extends GameObject { static int myscore; static int mygage; double speed; Image img1; Toolkit toolkit; //体力 int katasa; //あたり判定フラグ boolean ishit = false; //プレイヤーの位置を知っておくため、Playerインスタンスへの参照をを保持 Player player; /** * コンストラクタ * @param ix 生成先のx座標 * @param iy 生成先のy座標 * @param ispeed 移動スピード */ Player(double ix, double iy, double ispeed) { x = ix; y = iy; speed = ispeed; active = true; katasa = 5; boolean ishit = false; img1 = Toolkit.getDefaultToolkit().getImage("EDGE54.png"); } public void hit() { //体力減らす katasa--; ishit = true; if (katasa < 0) { active = false; //爆発を生成 for (int j = 0; j < 360; j += 20) { newParticle(player.x, player.y, j, 2); } } } private void newParticle(double x, double y, int j, int i) { // TODO 自動生成されたメソッド・スタブ } /** * ダミー関数<p> * (引数がスーパークラスのアブストラクト・メソッドの定義と異なるため) */ public void move() { } /** * 移動処理 * @param mx x方向の入力(-1 ... +1) * @param my y方向の入力(-1 ... +1) */ public void move(int mx, int my) { //Canvasの外には移動できないようにする double postX = x + mx * speed; double postY = y + my * speed; if ((0 < postX)&&(postX < 500)) { x = postX; } if ((0 < postY)&&(postY < 480)) { y = postY; } } //描画処理 public void draw(Graphics g) { } void paint(Graphics g) { if (active) { g.drawImage(img1, 1, -13, null); } ishit = false; } }
最初は、drawLineを使ってプレイヤーを表示していたので、画像表示に切り替えようと上のプログラムを使いました。
そしたら、何故かプレイヤーとしてではなく、宣言した位置に固定されて表示されてしまいます。
画像を表示する宣言は、キーイベントのところですべきでしょうか。
それとも、あたり判定をしているクラスがいいのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。