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