2012-02-09 1 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

Пожалуйста, ради всего того, что это круто, сломать это на более мелкие функции. У вас будет такое более легкое время для чтения вашего кода и выяснения ошибок. –

+0

Кроме того, '' P '! =' T'' всегда будет правдой. –

+0

Возможно, вы захотите посмотреть на состояние цикла. Боюсь, что «P» никогда не может быть «T». Я не писал алфавит, я просто применяю его. – Shaded

ответ

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, и я ввожу команду, доска не печатает. –

+0

затем введите код, который печатает плату внутри цикла ... – yurib

 Смежные вопросы

  • Нет связанных вопросов^_^