2012-11-27 89 views
0

我想在這裏做一個匹配的遊戲,我差不多完成了。在給出userInput後,我試圖用隱藏值替換遊戲板。我已經寫了代碼,看看「A1」是否可以工作,但不會。有沒有人有任何想法如何用另一個元素替換數組的元素?還是我做錯了?如何替換數組的值?

import java.util.*; 
public class breitje_MatchUp{ 
    static Scanner input = new Scanner(System.in); 
    static int i=0, count=0; 
    static char[][] clearBoard = new char[4][4]; 
    static char[][] board = new char[4][4]; 
    public static void main(String[] args){ 
     gamePlay(); 

    } 

    public static void drawMenu(){ 
     System.out.println("Welcome to the Match Up game! \n"); 
     System.out.println("Please select from the following: "); 
     System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); 
     System.out.println("1. New Game"); 
     System.out.println("2. Quit"); 
     System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); 
     int optionSelect = input.nextInt(); 
     System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); 
     while(optionSelect!=1 && optionSelect !=2){ 
     System.out.println("Please enter 1 (New Game) or 2(Quit)"); 
     optionSelect = input.nextInt();} 
     if (optionSelect == 1) 
     System.out.print("START GAME HERE********"); 
     else if (optionSelect == 2) 
     System.out.println("Thanks for playing! Have a great day."); 
    } 


    public static char[][] buildBoard(){ 
     char[][] board = new char[4][4]; 
     for(int i = 0; i <board.length; i ++){ 
     for(int j = 0; j<board[0].length;j++){ 
      board[i][j]=(char)(65+Math.random()*8); 
     } 
     } 
     return board; 
    } 

    public static void drawBoard(){ 
     for(int row1 = 0; row1 < 4; row1++) { 
     // this will create a new line for each new row 
     System.out.println(""); 
     for(int col1 = 0; col1 < 4; col1++) { 
      // this will print out the 4 row variable values 
      clearBoard[row1][col1]='.'; 
     }   
     } 
     System.out.format(" %2s %2s %2s %2s \n",'A','B','C','D'); 
     System.out.format(" %2s %2s %2s %2s \n",'-','-','-','-'); 
     System.out.format("1 |%2s %2s %2s %2s \n", 
      clearBoard[0][0], 
      clearBoard[0][1], 
      clearBoard[0][2], 
      clearBoard[0][3]); 
     System.out.format("2 |%2s %2s %2s %2s \n", 
      clearBoard[1][0], 
      clearBoard[1][1], 
      clearBoard[1][2], 
      clearBoard[1][3]); 
     System.out.format("3 |%2s %2s %2s %2s \n", 
      clearBoard[2][0], 
      clearBoard[2][1], 
      clearBoard[2][2], 
      clearBoard[2][3]); 
     System.out.format("4 |%2s %2s %2s %2s \n", 
      clearBoard[3][0], 
      clearBoard[3][1], 
      clearBoard[3][2], 
      clearBoard[3][3]); 
    } 


    public static void gamePlay(){ 
     while(!checkForWin(count)){ 
     drawBoard(); 
     System.out.print("Card 1: Column/Row (Ex: A3) : "); //input 1 
     String userInput = input.nextLine(); System.out.println(); 
     userInput = userInput.toUpperCase().trim(); 

     convertInput(userInput); 

     drawBoard(); 

     System.out.print("Card 2: Column/Row (Ex: A3) : "); //input 2 
     String userInput1 = input.nextLine(); System.out.println(); 
     userInput1 = userInput.toUpperCase().trim(); 
     } 
     drawMenu(); 
    } 
    public static void convertInput(String input){ 
     if(input.equals("A1")) 
     clearBoard[0][0]=board[0][1]; 

    } 

    public static boolean checkForWin(int count){ 
     if (count == 8) 
     return true; 
     else 
     return false; 
    } 
} 
+0

你期望它做什麼,它實際上做了什麼?我們需要更多的澄清問題? –

+0

你的代碼把一個元素從一個數組放入另一個'clearBoard [0] [0] = board [0] [1]'是好的。請注意,您在名爲'board'的類中有一個靜態成員,並且在某些方法中(例如'buildBoard'),您有一個名爲'board'的* local *變量,這會在該方法中隱藏它。這可能不是一個好主意,肯定會讓你感到困惑。 –

+0

@RohitJain我希望它可以用匹配遊戲的隱藏字母替換表格中的物品。 –

回答

1

您所做的更改正被覆蓋方法所覆蓋。

 clearBoard[row1][col1]='.'; // this will print out the 4 row variable values    

這不是我清楚你想要什麼這個方法來完成,因爲註釋完全的代碼不同意 - 你的值設置爲一個週期,在該行不打印任何東西了。

在這裏還有很多風格的東西需要改進 - 名爲draw的方法不應該具有重新設置電路板的副作用。

0

除了@ I82Much的回答,你聲明buildBoard方法,但從來沒有調用它,所以當你設置clearBoard [0] [0] = board [0] [1]時,你將它設置爲null(我認爲) 。

在您的buildBoard方法中,您將重新聲明一個新的電路板陣列,它在本地範圍內。