2017-09-07 9 views
0

以下は現在実行しているコードです。アーケードゲームTronのテキストベースのバージョンを作ろうとしています。ユーザーが方向(WASD)を入力しない限り、ゲームを自動的に実行したい。私はタイマーを調べましたが、私がスイングを使用する場合、私はアクションリスナーを実装することができましたが、このプロジェクトはGUIなしで厳密に行われることを知っています。私は誰かがゲームをよりダイナミックにし、ターンベースではない方法をいくつか考えているのだろうかと思っていました。時間間隔でループを実行するJava

while (player1.playerAlive) { 
    String directionPrompt = "please enter a direction: \n" + "(W) - UP\n" + "(S) - DOWN\n" + "(A) - LEFT\n" + "(D) - RIGHT"; 
    String continueMovingInput; 
    continueMovingInput = userMoveInput("To auto move:(Press Enter), to change direction, " + directionPrompt);` 

    if (continueMovingInput.equals("") || continueMovingInput.equals("w") || continueMovingInput.equals("a") || continueMovingInput.equals("s") || continueMovingInput.equals("d")) { 
     switch (continueMovingInput) { 
      case "w": 
       player1.moveUp(); 
       break; 
      case "a": 
       player1.moveLeft(); 
       break; 
      case "s": 
       player1.moveDown(); 
       break; 
      case "d": 
       player1.moveRight(); 
       break; 
      default: 
       System.out.println("auto move"); 
       break; 
     } 

     boolean collision = player1.movePlayer(); 
     if (!collision) { 
      gridArena.gridPlacer(player1.getPlayerX(), player1.getPlayerY(), 1); 
      gridArena.gridPrinter(); 
     } else { 
      break; 
     } 
    } else { 
     System.out.println("incorrect selection"); 
    } 
} 

EDIT:誰かが私は同時に2つのスレッドを実行し、1つは入力を確認してからメインゲームを実行することを提案しました。このようなことは良いアイデアのようですが、入力スレッドが受け取った入力をゲームを実行しているスレッドと共有する方法が不明です。

答えて

0
int intervals = 1000; 
    do { 
     if (System.currentTimeMillis() % intervals == 0) { 
      System.out.println("asd"); 
     } 
    } while (true); 

あなたが正しいことを理解しているかどうかわかりません。しかし、おそらくこれ以上のものは何か?無限のwhileループがあり、毎秒何か起こった(この場合はテキストが表示されている)。

1

次の例のように、Thread.sleep(millis)を使用することができます。

while(true){ 
     //do something 
     Thread.sleep(1000); 
    } 
関連する問題