2016-12-14 30 views
-2

私は2D配列プロジェクトの迷路ゲームに取り組んでいます。これまで私はランダム化されたゲームボードを作ってきました。プログラムが実行されるたびに、ゲームボードがランダム化されます。目標は、 'X'と '*'を避けながら右上から 'E'(最後)の左下に 'P'(プレイヤー)を得ることです。私は、プレイヤーが上、下、右、左を入力してPを動かせるようにする方法を助ける必要があります。簡単なJava 2D配列の迷路ゲーム

public class MazeGame { 
//Declare scanner to allow user to input directional commands 
Scanner move = new Scanner(System.in); 

public static void main(String[] args) { 
    //Call methods 
    Game_Beginning(); 
    Game_Board();  
} 

//Intro to the game 
public static void Game_Beginning(){ 
      System.out.println("This is your game board:"); 
    System.out.println("-------------------------------"); 
} 

//Game Board 
public static void Game_Board(){ 
    //Declare new array, maze 10x10 
    char maze[][] = new char[10][10]; 

    //Randomly print the obstacles in the maze. 
    for (int i = 0; i < maze.length; i++){ 
     for (int j = 0; j < maze.length; j++){ 
      double random = Math.random(); 
      if (random <= .05){ 
       maze[i][j] = '*'; 
      } 
      else if (random > .06 && random <= .15){ 
       maze[i][j] = 'X'; 
      } 
      else{ 
       maze[i][j] = '.'; 
      } 
      maze[0][0] = 'P'; 
      maze[9][9] = 'E'; 
      System.out.print(maze[i][j]); 
     } 
     System.out.println(""); 
    } 


} 

/** 
* Add a method called "makePMove." Define char right, char left and so on 
*/ 
public static void makeMove(){ 
    int row; 
    int col; 
    System.out.print("Enter your move (Up-Down-Left-Right): "); 

} 

}

+0

'P'の位置を保存してから、入力した方向をテストする' move() 'メソッドが必要です。インデックスが範囲外であるかどうかを確認し、適切に戻ります。 –

+0

[Java命名規則](http://www.oracle.com/technetwork/java/codeconventions-135099.html)では、メソッドは大文字で始めるべきではなく、動詞である必要があります(または少なくとも動詞で始める必要があります) 。また、アンダースコアは、通常、メソッド名ではなく定数の命名にのみ使用されます。 –

+0

あなたのボードは純粋に無作為に生成されているので、迷路が解けるという保証はありません。迷路が解決できるかどうかを検証するための論理を作成し、解決できない場合は新しいものを生成することを検討する必要があります。 –

答えて

0

まずあなたがループを作成し、ユーザーのコマンドを認識する必要があります。これは私がこれまで持っているものです。
1.あなたの配列/ボードに目標位置を特定しますあなたはあなたが必要とする必須の方向が何であるかを知っていればそれで、あなたは

while (true) { 

     String playerInput = move.next(); 
     switch (playerInput) { 
      case "u" : 
       System.out.println("User command is 'up'"); 
       break; 
      case "d" : 
       System.out.println("User command is 'down'"); 
       break; 
      case "l" : 
       System.out.println("User command is 'left'"); 
       break; 
      case "r" : 
       System.out.println("User command is 'right'"); 
       break; 
      case "e" : 
       System.out.println("User command is 'exit'"); 
       break; 
      case "y" : 
       System.out.println("User command is 'yes'"); 
       break; 
      case "n" : 
       System.out.println("User command is 'no'"); 
       break; 
      default: 
       System.out.println("Unknown command '" + playerInput + "'!"); 
     } 
    } 

次に、あなたのGame_Board()メソッドの後にこのような何かを追加することができます。
2.ルールによって目標位置への移動が許可されているかどうかを確認します。
3.移動が許可されている場合:
3.1。ターゲットポジショニングに「P」を入れてください
3.2。 'を入れてください。 'P'の前の位置に変更してください。

また、ユーザーが終了するために想定される動作を実装していることを確認してください。