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;
}
}
clearBoard[0][0]=board[0][1]is fine. Note that you have a static member in the class calledboard, and in some methods (buildBoard, for instance) you have a local variable calledboard, which will shadow it within that method. That's probably not a great idea, and certainly can confuse you.