Java tic tac toe,计算机can';t温(爪哇)
我正在用java编写一个井字游戏。我还没做完,但我已经做了一些事情,应该可以玩了。问题是,我已经完成了代码,所以计算机应该能够赢,但它不工作。当电脑连续三次显示“电脑赢了”时,它会继续播放 代码如下:Java tic tac toe,计算机can';t温(爪哇),java,artificial-intelligence,Java,Artificial Intelligence,我正在用java编写一个井字游戏。我还没做完,但我已经做了一些事情,应该可以玩了。问题是,我已经完成了代码,所以计算机应该能够赢,但它不工作。当电脑连续三次显示“电脑赢了”时,它会继续播放 代码如下: import java.util.Scanner; import java.util.concurrent.ThreadLocalRandom;; public class Main { static int[][] gameBoard = new int[3][3]; static Scan
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;;
public class Main {
static int[][] gameBoard = new int[3][3];
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
//initialize game board
for(int x=0;x<3; x++){
for(int i=0;i<3;i++){
gameBoard[x][i] = 0;
}
}
gameLoop();
}
static void gameLoop(){
boolean loop = true;
while(loop==true){
displayBoard();
playerMove();
if(checkIfWin() == true){
loop = false;
}
if(checkIfLose() == true)
loop = false;
computerInput();
}
}
static void playerMove(){
String playerInput;
System.out.println();
System.out.print("Your move: ");
playerInput = userInput.next();
if(playerInput.equals("a1")){
if(gameBoard[0][0] == 0){
gameBoard[0][0] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("a2")){
if(gameBoard[1][0] == 0){
gameBoard[1][0] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("a3")){
if(gameBoard[2][0] == 0){
gameBoard[2][0] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("b1")){
if(gameBoard[0][1] == 0){
gameBoard[0][1] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("b2")){
if(gameBoard[1][1] == 0){
gameBoard[1][1] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("b3")){
if(gameBoard[2][1] == 0){
gameBoard[2][1] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("c1")){
if(gameBoard[0][2] == 0){
gameBoard[0][2] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("c2")){
if(gameBoard[1][2] == 0){
gameBoard[1][2] = 1;
}else{
System.out.println("That one is already taken!");
}
}else if(playerInput.equals("c3")){
if(gameBoard[2][2] == 0){
gameBoard[2][2] = 1;
}else{
System.out.println("That one is already taken!");
}
}
}
static boolean checkIfLose(){
if(gameBoard[0][0] == 2 && gameBoard[0][1] == 2 && gameBoard[0][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[1][0] == 2 && gameBoard[1][1] == 2 && gameBoard[1][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[2][0] == 2 && gameBoard[2][1] == 2 && gameBoard[2][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[0][1] == 2 && gameBoard[2][1] == 2 && gameBoard[2][1] == 2){
System.out.println("\nComputer wins!");
displayBoard();
return true;
}else if(gameBoard[0][0] == 2 && gameBoard[1][0] == 2 && gameBoard[2][0] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[2][0] == 2 && gameBoard[2][1] == 2 && gameBoard[2][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[0][2] == 2 && gameBoard[1][2] == 2 && gameBoard[2][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[0][0] == 2 && gameBoard[1][1] == 2 && gameBoard[2][2] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else if(gameBoard[0][2] == 2 && gameBoard[1][1] == 2 && gameBoard[2][0] == 2){
displayBoard();
System.out.println("\nComputer wins!");
return true;
}else{
return false;
}
}
static boolean checkIfWin(){
if(gameBoard[0][0] == 1 && gameBoard[0][1] == 1 && gameBoard[0][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[1][0] == 1 && gameBoard[1][1] == 1 && gameBoard[1][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[2][0] == 1 && gameBoard[2][1] == 1 && gameBoard[2][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[0][1] == 1 && gameBoard[2][1] == 1 && gameBoard[2][1] == 1){
System.out.println("\nYou win!");
displayBoard();
return true;
}else if(gameBoard[0][0] == 1 && gameBoard[1][0] == 1 && gameBoard[2][0] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[2][0] == 1 && gameBoard[2][1] == 1 && gameBoard[2][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[0][2] == 1 && gameBoard[1][2] == 1 && gameBoard[2][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[0][0] == 1 && gameBoard[1][1] == 1 && gameBoard[2][2] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else if(gameBoard[0][2] == 1 && gameBoard[1][1] == 1 && gameBoard[2][0] == 1){
displayBoard();
System.out.println("\nYou win!");
return true;
}else{
return false;
}
}
static void displayBoard(){
System.out.println(" A B C");
for(int x=0; x<3; x++){
if(x>0)
System.out.println();
System.out.print(x+1 + " ");
for(int i=0; i<3; i++){
if(i>0)
System.out.print(" ");
System.out.print(gameBoard[x][i]);
}
}
}
static void computerInput(){
int x;
int y;
boolean loop = true;
while(loop == true){
x = 0;
y = 0;
x = ThreadLocalRandom.current().nextInt(0, 2 + 1);
y = ThreadLocalRandom.current().nextInt(0, 2 + 1);
if(gameBoard[y][x] == 0){
gameBoard[y][x] = 2;
loop = false;
}
}
}
}
import java.util.Scanner;
导入java.util.concurrent.ThreadLocalRandom;;
公共班机{
静态int[]gameBoard=新int[3][3];
静态扫描仪用户输入=新扫描仪(System.in);
公共静态void main(字符串[]args){
//初始化游戏板
对于(int x=0;x
为计算机输入添加循环检查,以确保如果游戏已在该迭代中完成,则不会触发新的移动@Sh4d0wsPlyr他们在那里?由于计算机输入在循环设置为false后运行,它肯定会在决策后发挥更大的作用,因为循环将完成其迭代。如果你用If(循环)包装计算机移动,它可能会解决你的问题。我刚刚使用了你的代码,得到了“计算机赢!”?问题是什么?谁对这个问题投了赞成票?!这是一个很好的例子,通过调试他自己的代码可以很容易地解决问题。@redFIVE:这是在我的手机上写的,所以请给我至少两分钟的时间,在你开始投反对票之前,在尝试预览代码后添加评论rt是从最初的帖子中复制出来的,只是添加它以显示正确的上下文。
static void gameLoop(){
boolean loop = true;
while(loop==true){
displayBoard();
playerMove();
if(checkIfWin() == true){
loop = false;
}
if(checkIfLose() == true)
loop = false;
If(loop){
computerInput();
}
}
}