Я работаю над проектом, проект заключается в создании игры с Нотами и Крестами. Я запрограммировал GUI, выиграл чеки e.t.c, но я застрял на программировании AI. Я представил массив 3x3, полный JButtons. Это было очень сложно.AI для Tic Tac Toe
Я ищу идеи, которые могли бы помочь мне составить код более эффективного и эффективного кода. Я думаю, что мой метод был не очень эффективным, и я хочу кодировать AI, чтобы сделать отметки горизонтально и вертикально (наступательные и защитные стратегии).
Заранее спасибо
Это то, что я сделал до сих пор:
общественного класса Компьютер {
public void AI()
{
for(int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
// Diagonal Defensive Strategy for computerX and computerO
if (Game.computerX == true && Game.Board[i*1][j*1].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("O") && Game.Board[i*1+2][j*1+2].getText().equals(""))
{
Game.Board[i*1+2][j*1+2].setText("X");
}
else if (Game.computerX == true && Game.Board[i*1+2][j*1+2].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("O") && Game.Board[i*1][j*1].getText().equals(""))
{
Game.Board[i*1][j*1].setText("X");
}
else if (Game.computerX == true && Game.Board[i*1+2][j*1+2].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("") && Game.Board[i*1][j*1].getText().equals("O"))
{
Game.Board[i*1+1][j*1+1].setText("X");
}
//*************************************** For computerO *******************************
else if (Game.computerO == true && Game.Board[i*1][j*1].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("X") && Game.Board[i*1+2][j*1+2].getText().equals(""))
{
Game.Board[i*1+2][j*1+2].setText("O");
}
else if (Game.computerO == true && Game.Board[i*1+2][j*1+2].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("X") && Game.Board[i*1][j*1].getText().equals(""))
{
Game.Board[i*1][j*1].setText("O");
}
else if (Game.computerO == true && Game.Board[i*1+2][j*1+2].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("") && Game.Board[i*1][j*1].getText().equals("X"))
{
Game.Board[i*1+1][j*1+1].setText("O");
}
//*********************************************************************************************
// Diagonal Offensive Strategy for computerX and computerO
if (Game.computerX == true && Game.Board[i*1][j*1].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("X") && Game.Board[i*1+2][j*1+2].getText().equals(""))
{
Game.Board[i*1+2][j*1+2].setText("X");
}
else if (Game.computerX == true && Game.Board[i*1+2][j*1+2].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("X") && Game.Board[i*1][j*1].getText().equals(""))
{
Game.Board[i*1][j*1].setText("X");
}
else if (Game.computerX == true && Game.Board[i*1+2][j*1+2].getText().equals("X") && Game.Board[i*1+1][j*1+1].getText().equals("") && Game.Board[i*1][j*1].getText().equals("X"))
{
Game.Board[i*1+1][j*1+1].setText("X");
}
//*************************************** For computerO *******************************
else if (Game.computerO == true && Game.Board[i*1][j*1].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("O") && Game.Board[i*1+2][j*1+2].getText().equals(""))
{
Game.Board[i*1+2][j*1+2].setText("O");
}
else if (Game.computerO == true && Game.Board[i*1+2][j*1+2].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("O") && Game.Board[i*1][j*1].getText().equals(""))
{
Game.Board[i*1][j*1].setText("O");
}
else if (Game.computerO == true && Game.Board[i*1+2][j*1+2].getText().equals("O") && Game.Board[i*1+1][j*1+1].getText().equals("") && Game.Board[i*1][j*1].getText().equals("O"))
{
Game.Board[i*1+1][j*1+1].setText("O");
}
//**************************************************************************************
}
Знаете ли вы, что 'i * 1 = i', правильно? (аналогично, 'j * 1 = j') – libik
Существуют разные подходы при программировании AI. Некоторые из них более простые, но некоторые из них очень сложны, возможно, вам стоит проверить их и проверить, не затрудняет ли ваш потенциал в программировании. Возможно, вам стоит взглянуть на вопрос [this] (http://stackoverflow.com/questions/40541/simple-ai-programming). – SomeJavaGuy
Обратите внимание, что уже есть алгоритм для победы или, по крайней мере, привязка к этой игре. Но если вы хотите попробовать простой алгоритм ИИ, вы можете попробовать минимакс –