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;
   }
}
4

3 に答える 3

1

行った変更は draw メソッドによって上書きされています。

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

コメントがコードと完全に一致しないため、このメソッドで何を達成しようとしているのかは明確ではありません。値をピリオドに設定していて、その行に何も出力していません。

ここでも改善すべき多くのスタイルがあります。名前付きのメソッドdrawは、ボードをリセットするという副作用を持つべきではありません。

于 2012-11-27T06:27:39.230 に答える
0

JAVA の配列 API を確認してください。非常に興味深く有用なメソッドはほとんどありません。 http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

于 2012-11-27T06:39:50.670 に答える
0

@I82Much の回答に加えて、buildBoard メソッドを宣言しますが、それを呼び出すことはないため、clearBoard[0][0]=board[0][1] を設定すると null に設定されます (と思います)。

buildBoard メソッドでは、スコープ内でローカルな新しいボード配列を再宣言しています。

于 2012-11-27T06:36:24.793 に答える