Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现一个聪明的对手_Java_Arrays - Fatal编程技术网

Java 实现一个聪明的对手

Java 实现一个聪明的对手,java,arrays,Java,Arrays,我是一个试图用java创建Tictatcoe游戏的初学者,我需要创建两种特定的方法,一种是对手随机玩,另一种是对手积极且“聪明”地玩,试图主动赢得每一回合。 我的问题来自积极的演奏方法,因为我不知道如何从这个开始 import javax.swing.JOptionPane; public class Tictactoe { String table[][]; boolean winner; public Tictactoe() { table = new String[3][

我是一个试图用java创建Tictatcoe游戏的初学者,我需要创建两种特定的方法,一种是对手随机玩,另一种是对手积极且“聪明”地玩,试图主动赢得每一回合。
我的问题来自积极的演奏方法,因为我不知道如何从这个开始

import javax.swing.JOptionPane;

public class Tictactoe
{
String table[][];    
boolean winner;
public Tictactoe()
{
    table = new String[3][3];
    for(int x = 0; x < 3; x++)
    {
        for(int y = 0; y < 3; y++)
        {
            table[x][y] = " ";
            int xUser;
            int yUser;
            int xMac;
            int yMac;
        }
    }
}

public void board()
{ 
    System.out.println("-----------");
    for(int x = 0; x < 3; x++)
    {

        System.out.print("| ");
        for(int y = 0; y < 3; y++)
        {

            System.out.print(table[x][y] + " | ");
        }

        System.out.println();

    }
    System.out.println("-----------");
}

public void playRandom()
{
    int x;
    int y;
    int xMaq;
    int yMaq;
    boolean winner = false;
    while(!winner)
    {
        move();                    
    }
    if(winner = true)
    {
        new Tictactoe();

}

public void findWinnerMach()
{
    if (table[0][0]== "O" && table[0][1]== "O" && table [0][2]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;       
        board();
        System.exit(0);
    }
    if (table[1][0]== "O" && table[1][1]== "O" && table [1][2]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[2][0]== "O" && table[2][1]== "O" && table [2][2]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }
    if (tabla[0][0]== "O" && tabla[1][0]== "O" && tabla [2][0]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][1]== "O" && table[1][1]== "O" && table [2][1]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][2]== "O" && table[1][2]== "O" && table [2][2]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }        
    if (table[0][0]== "O" && table[1][1]== "O" && table [2][2]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][2]== "O" && table[1][1]== "O" && table [2][0]== "O") {
        JOptionPane.showMessageDialog(null, "You lose");
        winner = true;
        board();
        System.exit(0);
    }

}

public void findWinnerUser()
{
    if (table[0][0]== "X" && table[0][1]== "X" && table [0][2]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[1][0]== "X" && table[1][1]== "X" && table [1][2]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true;
        board();
        System.exit(0);
    }
    else if (table[2][0]== "X" && table[2][1]== "X" && table [2][2]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][0]== "X" && table[1][0]== "X" && table [2][0]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true; 
        board();
        System.exit(0);
    }
    if (table[0][1]== "X" && table[1][1]== "X" && table [2][1]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true
        board();
        System.exit(0);
    }
    if (table[0][2]== "X" && table[1][2]== "X" && table [2][2]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][0]== "X" && table[1][1]== "X" && table [2][2]== "X") {
        JOptionPane.showMessageDialog(null, "You win!");
        winner = true;
        board();
        System.exit(0);
    }
    if (table[0][2]== "X" && table[1][1]== "X" && table [2][0]== "X") {
        JOptionPane.showMessageDialog(null, "You win!"); 
        winner = true;
        board();
        System.exit(0);
    }
}

public void move()
{
    int xUser;
    int yUser;
    int xMac;
    int yMac;        
    xUser = Integer.parseInt(JOptionPane.showInputDialog("Type a row from 0 to 2"));
    yUser = Integer.parseInt(JOptionPane.showInputDialog("Type a column from 0 to 2"));       
    if(table[xUser][yUser] == "X" || tabla[xUser][yUser] == "O" ) {
        xUser = Integer.parseInt(JOptionPane.showInputDialog("Selected slot is taken, select a new row"));
        yUser = Integer.parseInt(JOptionPane.showInputDialog("Selected slot is taken, select a new column"));
    }
    else
    {
        table[xUser][yUser] = "X";
    } 
    table[xUser][yUser] = "X";

    JOptionPane.showMessageDialog(null,"CPU moves");
    xMac = (int)(Math.random()*3)+0;
    yMac = (int)(Math.random()*3)+0;      
    if(table[xUser][yUser] == "O" || table[xUser][yUser] == "X" ) {
        xUser = (int)(Math.random()*3)+0;
        yUser = (int)(Math.random()*3)+0;
        table[xUser][yUser] = "O";
    }              
    findWinnerUser();
    findWinnerMac();
    board();
}

public void playSmart()
{

}
}
import javax.swing.JOptionPane;
公共类Tictatcoe
{
字符串表[];
布尔赢家;
公共交通
{
表=新字符串[3][3];
对于(int x=0;x<3;x++)
{
对于(int y=0;y<3;y++)
{
表[x][y]=“”;
int xUser;
内尤瑟;
int-xMac;
国际货币基金组织;
}
}
}
公共行政管理局()
{ 
System.out.println(“--------------”;
对于(int x=0;x<3;x++)
{
系统输出打印(“|”);
对于(int y=0;y<3;y++)
{
系统输出打印(表[x][y]+“|”);
}
System.out.println();
}
System.out.println(“--------------”;
}
公共图书馆
{
int x;
int-y;
int-xMaq;
int yMaq;
布尔赢家=假;
而(!赢家)
{
move();
}
如果(获胜者=真)
{
新的Tictactoe();
}
公共真空Findwinermach()
{
如果(表[0][0]=“O”和表[0][1]=“O”和表[0][2]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[1][0]=“O”&表[1][1]=“O”&表[1][2]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[2][0]=“O”和表[2][1]=“O”和表[2][2]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][0]==“O”&表[1][0]==“O”&表[2][0]==“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][1]=“O”和表[1][1]=“O”和表[2][1]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][2]=“O”和表[1][2]=“O”和表[2][2]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}        
如果(表[0][0]=“O”和表[1][1]=“O”和表[2][2]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][2]=“O”和表[1][1]=“O”和表[2][0]=“O”){
showMessageDialog(null,“您丢失”);
胜利者=真;
董事会();
系统出口(0);
}
}
公共void findwinerUser()
{
如果(表[0][0]=“X”&表[0][1]=“X”&表[0][2]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[1][0]=“X”&表[1][1]=“X”&表[1][2]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
else if(表[2][0]=“X”&表[2][1]=“X”&表[2][2]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][0]=“X”和表[1][0]=“X”和表[2][0]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][1]=“X”&表[1][1]=“X”&表[2][1]=“X”){
showMessageDialog(null,“您赢了!”);
获胜者=正确
董事会();
系统出口(0);
}
如果(表[0][2]=“X”&表[1][2]=“X”&表[2][2]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][0]=“X”&表[1][1]=“X”&表[2][2]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
如果(表[0][2]=“X”&表[1][1]=“X”&表[2][0]=“X”){
showMessageDialog(null,“您赢了!”);
胜利者=真;
董事会();
系统出口(0);
}
}
公开作废动议()
{
int xUser;
内尤瑟;
int-xMac;
国际货币基金组织;
xUser=Integer.parseInt(JOptionPane.showInputDialog(“键入从0到2的行”);
yUser=Integer.parseInt(JOptionPane.showInputDialog(“键入从0到2的列”);
如果(表[xUser][yUser]=“X”|表[xUser][yUser]=“O”){
xUser=Integer.parseInt(JOptionPane.showInputDialog(“选择的插槽被占用,选择新行”);
yUser=Integer.parseInt(JOptionPane.showInputDialog(“选择的插槽被占用,选择一个新列”);
}
其他的
{
表[xUser][yUser]=“X”;
} 
表[xUser][yUser]=“X”;
showMessageDialog(null,“CPU移动”);
xMac=(int)(Math.random()*3)+0;
yMac=(int)(Math.random()*3)+0;
如果(表[xUser][yUser]=“O”|表[xUser][yUser]=“X”){
xUser=(int)(Math.random()*3)+0;
yUser=(int)(Math.random()*3)+0;
表[xUser][yUser]=“O”;
}              
findWinnerUser();
Findwinermac();
董事会();
}
public void playSmart()
{
}
}

大多数情况下,它仍然有效,还有很多需要改进的地方,但是,我不想这样做,直到我有一个固定的方法、想法或计划来实现这个“智能”方法,以防我到目前为止大错特错,如果有任何帮助,我将不胜感激。

对于智能AI,您将需要查看。还有更高级的算法,但对于Tic-Tac