0

I am trying to do a matching game here and I am almost done. After the userInput is given, I am trying to replace the gameboard with the hidden value. I have writen the code to see if "A1" will work but it won't. Does anyone have any ideas on how to replace an element of an array with another element? Or am I doing it wrong?

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;
   }
}
3
  • What do you expect it to do, and what it actually does? We need more clarification to the problem? Commented Nov 27, 2012 at 6:24
  • Your code to put an element from one array into another clearBoard[0][0]=board[0][1] is fine. Note that you have a static member in the class called board, and in some methods (buildBoard, for instance) you have a local variable called board, which will shadow it within that method. That's probably not a great idea, and certainly can confuse you. Commented Nov 27, 2012 at 6:24
  • @RohitJain I expect it to replace that item in the table with the hidden letter for the matching game. Commented Nov 27, 2012 at 6:27

3 Answers 3

1

The change you make is being overwritten by the draw method.

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

It's not clear to me what you're trying to accomplish in this method, since the comment completely disagrees with the code - you're setting the values to a period, not printing anything out at that line.

There's a lot of style things to improve here as well - a method named draw should not have the side effect of resetting the board.

Sign up to request clarification or add additional context in comments.

Comments

0

In addition to @I82Much's answer, you declare the buildBoard method but never call it, so when you set clearBoard[0][0]=board[0][1] you are setting it to null (i think).

In your buildBoard method you are re-declaring a new board array that's local in scope.

Comments

0

Check out Arrays API of JAVA; it has few very interesting and useful methods. http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.