2016-12-14 115 views
-2

我正在做一個2D數組項目的迷宮遊戲。到目前爲止,我已經設法制作了一個隨機遊戲板。每次程序運行時,遊戲板都是隨機的。目標是讓'P'(玩家)從右上角到'E'(結束)左下角,同時避開'X'和'*'。我需要幫助製作一種允許玩家輸入向上,向下,向右,向左移動的方法。這是我到目前爲止有:簡單的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.確定你的陣列/板目標位置:所以,你可以,一旦你知道什麼是你需要的所需方向的Game_Board()方法

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 + "'!"); 
     } 
    } 

然後之後添加這樣的事情。
2.驗證您的規則是否允許移動到目標位置
3.如果允許移動:
3.1。將'P'放入目標位置
3.2。放''。插入'P'的前一個位置

另外請確保您已經實現了用戶退出的預期行爲。