我正在尝试在这里进行匹配游戏,我差不多完成了。在给出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 :(得分:1)
您所做的更改将被draw方法覆盖。
clearBoard[row1][col1]='.'; // this will print out the 4 row variable values
我不清楚你在这个方法中想要完成什么,因为评论完全不同意代码 - 你将值设置为一个句点,而不是在那一行打印任何东西。
这里还有很多风格要改进 - 名为draw
的方法不应该有重置电路板的副作用。
答案 1 :(得分:0)
除了@ I82Much的答案之外,你声明了buildBoard方法但从不调用它,因此当你设置clearBoard [0] [0] = board [0] [1]时,你将它设置为null(我认为)。
在buildBoard方法中,您将重新声明一个本地范围内的新电路板阵列。
答案 2 :(得分:0)
查看JAVA的Arrays API;它几乎没有非常有趣和有用的方法。 http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html