単純なカードゲーム(人間対CPU)ではロジックは機能しますが、コンピュータの回転を遅らせたいと思います。JavaのAndroidでターンベースのゲームのメソッドを遅らせるには
私はThread.sleep(int milliseconds)
を使用しようとしましたが、画像が表示される順序が乱れます。私はゲームループを使用していない、私はカードが変更されるたびにImageViewsを動的に更新しています。 Thread.sleepの問題は、の後、すべての画像のみが更新されます。 Thread.sleep、Thread.sleepの前には人間のカードしか表示されません。人間のカードとコンピュータのカードは、Thread.sleepの後に表示されます。
私はそうのように使用してきたのThread.sleep:
playPlayerCard(player); // Human first
displayPile(); // Display card pile (ImageView's)
player = nextPlayer(player); // Get's next player in Player mPlayers List<Player>
// Wait for computer to 'Think'
Thread.sleep(500);
playPlayerCard(player); //Computer's turn
displayPile(); // Display card pile (ImageView's)
私はのThread.sleep()が間違っを使用していますか?より良い/正しい方法がありますか?私はオンラインで検索し、handler.postDelayed(Runnable r, long milliseconds)
とCountDownTimer
を使ってnew Thread()
を使ってみましたが、私の変数:playPlayerCard(player);
は最終変数ではないので、何の仕事もしていません。
私はいつも正しい時間に動作と画像を表示するのに問題がありました。助言がありますか?前もって感謝します。
まあ、あなたは変数をグローバルにすることができます - すべてのメソッドの外でクラス本体でそれらを定義します。その後、ハンドラを使用することができます。 – Jakar
@ジャカル、それは働いて、ありがとう。私はHandlerとRunnableを使用しています。必要なすべての変数(クラス変数に1つ、悪くない)を変更しました。 – SuckerForMayhem