2016-10-24 14 views
0

私はLWJGLとSlick2dでboulderdashリメイクを行っています。私は別のboulderdashリメイク私はそれを解決することができますので、(abandonware掘るジム - クール)をインストールしている。右上、左下、左下などの遷移(JavaゲームLWJGLキーリースナー)

私はこの

if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { 
     x += Clock.delta() * speed; 
    } else if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){ 
     y += Clock.delta() * speed; 
    } else if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)){ 
     x -= Clock.delta() * speed; 
    } else if (Keyboard.isKeyDown(Keyboard.KEY_UP)){ 
     y -= Clock.delta() * speed; 
    } 

のように見えるし、問題がImがLEFTに行くとき、私はまだ左の保持が、UPの方向を変更することはできませんDOWNに向きを変えることができるということである簡単なのKeyListenerの動きを作りました。右を保持するときは上または下に移動することはできませんが、上を保持するときは左と右に方向を変えることができます。

私の質問は - このセクションをどのように実装する必要があるのですか?この機能は良いコントロールシステムにとって重要だと私は信じています。それ以外の場合、プレイヤーは1秒間拘束され、次にモンスターがあなたを獲得し、あなたは死んでしまうからです。だから私は本当に頼んでいる - 前の鍵を持っている方向を変える方法。それで第二鍵をリリースするときにImを第一の方向に戻す。

答えて

2

単純な "ifs"の代わりに "else ifs"を使うロジックに問題があります。あなたのコードでLEFTが押された時、DOWNについての "else if"は実行されません。 コードを次のように書き直す必要があります。

if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { 
     x += Clock.delta() * speed; 
    } 
    if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){ 
     y += Clock.delta() * speed; 
    } 
    if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)){ 
     x -= Clock.delta() * speed; 
    } 
    if (Keyboard.isKeyDown(Keyboard.KEY_UP)){ 
     y -= Clock.delta() * speed; 
    } 
+0

私はそのことについてどう考えなかったのでしょうか。時には、私は単純なことに失敗するだけです。学んだ教訓。ご助力ありがとうございます。今私はそのような愚かな質問を求めて愚かな感じ:) – laszlo

関連する問題