2012-02-09 53 views
0

我的程序在输入每个命令后生成一个新的游戏板。我只想让“P”在棋盘和障碍物保持不变的情况下进行更新,直到比赛结束。感谢您的帮助提前,这里是我的代码:在每个命令输入后停止板随机化

import java.util.Scanner; 
import java.util.Random; 

public class Adventure { 

public static void main(String[] args) { 
    // Create 2D array for game board. 
    char grid[][]= new char[10][10]; 
    Scanner move = new Scanner(System.in); 
    System.out.println("Here is the current game board:"); 
    System.out.println("-------------------------------"); 

    do{ 
     for(int i=0; i<grid.length; i++) {   
      for(int j=0; j<grid.length; j++) { 
       double Random = Math.random(); 
       if(Random <=.05) { 
        grid[i][j]='*'; 
       } 
       else if(Random > .06 && Random <= .15) { 
        grid[i][j]='X'; 
       }   
       else { 
        grid[i][j]='.'; 
       }    
       grid[0][0]='P'; 
       grid[9][9]='T'; 
       System.out.print(grid[i][j]); 
      } 
      System.out.println(""); 
     }    
     System.out.print("Enter your move (U/D/L/R)>");  
     String movePlayer = move.next(); 

     int x=0, y=0; 

     if(movePlayer.equals("R")) { 
      grid[y][x]='.'; 
      x++; 
     } 
     else if(movePlayer.equals("L")) { 
      grid[y][x]='.'; 
      x--; 
     } 
     else if(movePlayer.equals("U")) { 
      grid[y][x]='.'; 
      y++; 
     } 
     else if(movePlayer.equals("D")) { 
      grid[y][x]='.'; 
      y--; 
     } 
     else if(grid[y][x]=='*') { 
      System.out.println("You fell in a pit. Game Over."); 
     } 
     else if(grid[y][x]=='X') { 
      System.out.println("That spot is blocked. Please enter another move."); 
     } 
     else if(grid[y][x]=='T') 
      System.out.println("Congratulations! You've found the treasure!"); 
     else { 

      System.out.print(grid[y][x]); 
     } 
    }while('P' != 'T'); 
} 

}

+0

请所有的爱很酷,把它分解成更小的功能。阅读你的代码并找出错误会让你更容易。 – 2012-02-09 18:00:24

+0

另外,''P'!='T'将始终为真。 – 2012-02-09 18:00:55

+0

你可能想看看你的循环条件。恐怕'P'永远不会'T'。我没有写字母,我只是执行它。 – Shaded 2012-02-09 18:01:37

回答

0

此举产生do ... while()循环外板代码:

// generate the board once at the beginning of the program. 
do 
{ 
    // update moves repeatedly until game is over 
} while (<game over perdicate>) 
+0

以上做过这几行了当我把生成电路板的代码放在do while循环之外并输入命令时,电路板不打印。 – 2012-02-09 18:21:35

+0

然后把打印板内循环的代码... – yurib 2012-02-09 18:25:35