如何在不更改给定方法的情况下创建3x3?
我需要在main方法旁边创建4个方法,但是我被困在显示板上。
我是否需要创建一个代表每个数字的变量或某些东西,以便每次用户进入移动后我都可以使用它来更新电路板?
它应该是这样的:
1 2 3
4 5 6
7 8 9
以下是主要方法无法更改。
public class TicTacToe {
public static void main (String args[]) {
char[] board = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
char move = 'O';
displayBoard(board);
while (!checkWinner(board, move)){
move = changeMove(move);
makeMove(board, move);
displayBoard(board);
}
答案 0 :(得分:1)
从您提供的代码中,您似乎已获得board
。
是:
char[] board = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
您要做的是将其转换为3x3显示屏。
这可以很简单:
int k =0;
char[] board = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
for (int i=1;i<=3;i++) {
for (int j=1;j<=3;j++) {
System.out.print(board[k]);
k++;
}
System.out.println();
}
我认为让您感到困惑的是,您认为必须更新显示器本身问题的井字逻辑部分。
当您采取行动时,您应该做的是更改board
数组中需要更改的内容,然后您可以重新绘制电路板。
答案 1 :(得分:0)
import java.util.Scanner;
public class TicTacToe {
public static void main (String args[]) {
char[] board = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
char move = 'O';
displayBoard(board);
while (!checkWinner(board, move)){
move = changeMove(move);
makeMove(board, move);
displayBoard(board);
}
}
public static void displayBoard(char[] b){
int k = 0;
for(int i = 0; i <3 ; i++){
for (int j=0; j<3; j++){
System.out.print(b[k]);
k++;
}
System.out.println();
}
}
public static char changeMove(char m){
if(m == 'O'){
return 'X';
}
else return 'O';
}
public static void makeMove(char[] b, char m){
boolean valid = false;
System.out.println("========== " + m + "'s Move: Enter [1-9] to choose square =========");
Scanner s= new Scanner(System.in);
char square = s.next().charAt(0);
for(int i=0; i<9; i++){
if (b[i] == square){
b[i] = m;
valid = true;
}
}
if(!valid){
System.out.println("Invalid move");
makeMove(b,m);
}
}
public static boolean checkWinner(char[] b , char m){
//Horizontal
if(b[0] == b[1] && b[1] == b[2] ){
System.out.println(b[0] +" Won!");
return true;
}
if(b[3] == b[4] && b[4] == b[5]){
System.out.println(b[3] +" Won!");
return true;
}
if(b[6] == b[7] && b[7] == b[8]){
System.out.println(b[6] +" Won!");
return true;
}
//Vertical
if(b[0] == b[3] && b[3] == b[6]){
System.out.println(b[0] +" Won!");
return true;
}
if(b[1] == b[4] && b[4] == b[7]){
System.out.println(b[1] +" Won!");
return true;
}
if(b[2] == b[5] && b[4] == b[8]){
System.out.println(b[2] +" Won!");
return true;
}
//Diagonal
if(b[0] == b[4] && b[4] == b[8]){
System.out.println(b[0] +" Won!");
return true;
}
if(b[2] == b[4] && b[4] == b[6]){
System.out.println(b[2] +" Won!");
return true;
}
return false;
}
}
答案 2 :(得分:0)
对于<!--MENUEND-->
,您可以使用嵌套的displayBoard()
循环。外部循环遍历每一行,内部循环打印属于该行的三个值。
for
如果您需要其他帮助,请与我们联系。