2016-05-03 3 views
0

私のコンピュータ科学のクラスでは、ゲームを作成するように求められました。私がマウス入力の問題に来るまで、すべてがスムーズに進んでいました。私が達成しようとしているのは、JFrameの特定の位置でマウスをクリックし、次に弾丸を自分のキャラクターの位置で初期化し、マウスのポイントに向けて撃つことです。私はすでに弾丸をその角度で撃つためにtrigを使う方法を理解しています。問題は、マウスをクリックした後に弾丸を撃つと、私のキャラクターのxとyの位置が弾に更新されないということです。弾丸は常に同じ場所で初期化されます。ここに私が問題を引き起こしていると信じているコードセグメントがあります。私は研究を通じて集められたものからマウスイベントの問題を悪化させる

public void mousePressed(MouseEvent e) 
{  
    handler.addObject(new Bullet("res\\Fireball.png",x,y + ,ID.BasicEnemy,handler)); 
} 

public void mouseReleased(MouseEvent e) 
{ 
} 


public void tick() 
{ 

    x+=velX; 
    y+=velY; 

    x = Game.clamp(x,0,Game.WIDTH-40); 
    y = Game.clamp(y,0,Game.HEIGHT-40); 

    collision(); 


} 

マウスイベントが私のダニとは異なるスレッドであるため、のmousePressedでxとy()メソッドが更新されていない理由はあります。私はJavaプログラミングプログラミングに少し慣れていて、私に明白な提案を与えることができる人がいるかどうか疑問に思っていました。私のゲームの実際のコードは非常に長いので、私は上記のコードに絞り込みました(私は、予約語と揮発性変数を同期しようとしましたが、間違って実装している可能性があります)。

そして、 、私がこれを行う場合、弾丸オブジェクトは決して現れません!ここで

public void mousePressed(MouseEvent e) 
{  
    press=true; 
} 

public void mouseReleased(MouseEvent e) 
{ 
    press=false; 
} 


public void tick() 
{ 

    x+=velX; 
    y+=velY; 

    x = Game.clamp(x,0,Game.WIDTH-40); 
    y = Game.clamp(y,0,Game.HEIGHT-40); 


    collision(); 

    if (press) 
     handler.addObject(new Bullet("res\\Fireball.png",(int)x,(int)y ,ID.BasicEnemy,handler)); 
} 
+0

"マウスイベントの問題を悪化させる" "あなたの質問のタイトルは、あなたの実際のコード問題の要約であり、暴言やkvetchではありません。 –

+0

問題が発生する可能性があります。マウスイベントオブジェクト 'e'を' mousePressed(MouseEvent e) 'メソッド本体で使用することはありません。このオブジェクトはクリックの位置を保持していますが、私はあなたがそれを無視したいとは思いません。 –

+0

あなたは2つの弾丸を作成していますが、 'tick 'はあなたの' tick'がどのように呼び出されたかに応じて 'press'状態を見ていない可能性があります – MadProgrammer

答えて

2

public void mousePressed(MouseEvent e) {  
    handler.addObject(new Bullet("res\\Fireball.png",x,y + ,ID.BasicEnemy,handler)); 
} 

あなたはMouseEventのPointオブジェクトを使用しませんが、不変のxとyの値を使用するように見えるん。おそらく、あなたは、MouseEventオブジェクトからxとyを使いたい(言い難い):これはあなたの問題を解決しない場合は

public void mousePressed(MouseEvent e) {  
    handler.addObject(new Bullet("res\\Fireball.png", e.getX(), e.getY(), 
     ID.BasicEnemy, handler)); 
} 

、その後、あなたが最も小さいビットにコードを凝縮Minimal, Complete, and Verifiable Example Programを作成し、掲示を検討それでもコンパイルと実行、外部依存関係(データベースやイメージへのリンクなど)はなく、問題に関連しない余分なコードはありませんが、依然として問題を実証しています。

+0

ああ、十分に近いです:P(私は混乱しています、私は睡眠がありませんでした - それほど差はありません) – MadProgrammer

関連する問題