私はコンセプトを3x3 Tic Tac Toeに9x9に変更しています。コンセプトはちょうどTicTacToeのようなものです。あなたは水平の垂直または斜め3点の唯一の違いを獲得する必要があります。人がその人のための単一のスポットとしてマークする特定のセットを獲得すると、ゲームを9つのセットに分けました。メインゲームに勝つために次のセットを獲得する。 問題に私は直面しているゲームはうまくいきますAIは人やコンピュータが最初のセットを獲得するまで乱数を生成しています。その後、AIの動きはランダムではありません。タックのタックタックToe not moving random
Showing the stepsに何が起こっているかを示すために写真を添付
import java.util.Random;
public class TicTacToeGame {
private char mBoard[];
private final static int BOARD_SIZE = 81;
public static final char PLAYER_ONE = 'X';
public static final char PLAYER_TWO = '0';
public static final char EMPTY_SPACE = ' ';
private Random mRand;
public static int getBOARD_SIZE() {
// Return the size of the board
return BOARD_SIZE;
}
public TicTacToeGame(){
mBoard = new char[BOARD_SIZE];
for (int i = 0; i < BOARD_SIZE; i++)
mBoard[i] = EMPTY_SPACE;
mRand = new Random();
}
// Clear the board of all X's and O's
public void clearBoard()
{
for (int i = 0; i < BOARD_SIZE; i++)
{
mBoard[i] = EMPTY_SPACE;
}
}
// set the given player at the given location on the game board.
// the location must be available, or the board will not be changed.
public void setMove(char player, int location)
{
mBoard[location] = player;
}
// Return the best move for the computer to make. You must call setMove()
// to actually make the computer move to that location.
public int getComputerMove()
{
int move;
// First see if there's a move O can make to win
for (int i = 0; i < getBOARD_SIZE(); i++)
{
if (mBoard[i] != PLAYER_ONE && mBoard[i] != PLAYER_TWO)
{
char curr = mBoard[i];
mBoard[i] = PLAYER_TWO;
if (checkForWinner() == 3)
{
setMove(PLAYER_TWO, i);
return i;
}
else
mBoard[i] = curr;
}
}
// See if there's a move O can make to block X from winning
for (int i = 0; i < getBOARD_SIZE(); i++)
{
if (mBoard[i] != PLAYER_ONE && mBoard[i] != PLAYER_TWO)
{
char curr = mBoard[i];
mBoard[i] = PLAYER_ONE;
if (checkForWinner() == 2)
{
setMove(PLAYER_TWO, i);
return i;
}
else
mBoard[i] = curr;
}
}
// Generate random move
do
{
move = mRand.nextInt(getBOARD_SIZE());
} while (mBoard[move] == PLAYER_ONE || mBoard[move] == PLAYER_TWO);
setMove(PLAYER_TWO, move);
return move;
}
// Check for a winner and return a status value indicating who has won.
// Return 0 if no winner or tie yet, 1 if it's a tie, 2 if X won, or 3
// if O won.
public int checkForWinner()
{
//set0 win chk
if ((mBoard[0] == PLAYER_ONE &&
mBoard[1] == PLAYER_ONE &&
mBoard[2] == PLAYER_ONE) ||
(mBoard[9] == PLAYER_ONE &&
mBoard[10] == PLAYER_ONE &&
mBoard[11] == PLAYER_ONE) ||
(mBoard[18] == PLAYER_ONE &&
mBoard[19] == PLAYER_ONE &&
mBoard[20] == PLAYER_ONE) ||
(mBoard[0] == PLAYER_ONE &&
mBoard[9] == PLAYER_ONE &&
mBoard[18] == PLAYER_ONE) ||
(mBoard[1] == PLAYER_ONE &&
mBoard[10] == PLAYER_ONE &&
mBoard[19] == PLAYER_ONE) ||
(mBoard[2] == PLAYER_ONE &&
mBoard[11] == PLAYER_ONE &&
mBoard[20] == PLAYER_ONE) ||
(mBoard[0] == PLAYER_ONE &&
mBoard[10] == PLAYER_ONE &&
mBoard[20] == PLAYER_ONE) ||
(mBoard[2] == PLAYER_ONE &&
mBoard[10] == PLAYER_ONE &&
mBoard[18] == PLAYER_ONE))
return 2;
if ((mBoard[0] == PLAYER_TWO &&
mBoard[1] == PLAYER_TWO &&
mBoard[2] == PLAYER_TWO) ||
(mBoard[9] == PLAYER_TWO &&
mBoard[10] == PLAYER_TWO &&
mBoard[11] == PLAYER_TWO) ||
(mBoard[18] == PLAYER_TWO &&
mBoard[19] == PLAYER_TWO &&
mBoard[20] == PLAYER_TWO) ||
(mBoard[0] == PLAYER_TWO &&
mBoard[9] == PLAYER_TWO &&
mBoard[18] == PLAYER_TWO) ||
(mBoard[1] == PLAYER_TWO &&
mBoard[10] == PLAYER_TWO &&
mBoard[19] == PLAYER_TWO) ||
(mBoard[2] == PLAYER_TWO &&
mBoard[11] == PLAYER_TWO &&
mBoard[20] == PLAYER_TWO) ||
(mBoard[0] == PLAYER_TWO &&
mBoard[10] == PLAYER_TWO &&
mBoard[20] == PLAYER_TWO) ||
(mBoard[2] == PLAYER_TWO &&
mBoard[10] == PLAYER_TWO &&
mBoard[18] == PLAYER_TWO))
return 3;
//set1 win chk
if ((mBoard[3] == PLAYER_ONE &&
mBoard[4] == PLAYER_ONE &&
mBoard[5] == PLAYER_ONE) ||
(mBoard[12] == PLAYER_ONE &&
mBoard[13] == PLAYER_ONE &&
mBoard[14] == PLAYER_ONE) ||
(mBoard[21] == PLAYER_ONE &&
mBoard[22] == PLAYER_ONE &&
mBoard[23] == PLAYER_ONE) ||
(mBoard[3] == PLAYER_ONE &&
mBoard[12] == PLAYER_ONE &&
mBoard[21] == PLAYER_ONE) ||
(mBoard[4] == PLAYER_ONE &&
mBoard[13] == PLAYER_ONE &&
mBoard[22] == PLAYER_ONE) ||
(mBoard[5] == PLAYER_ONE &&
mBoard[14] == PLAYER_ONE &&
mBoard[23] == PLAYER_ONE) ||
(mBoard[3] == PLAYER_ONE &&
mBoard[13] == PLAYER_ONE &&
mBoard[23] == PLAYER_ONE) ||
(mBoard[5] == PLAYER_ONE &&
mBoard[13] == PLAYER_ONE &&
mBoard[21] == PLAYER_ONE))
return 2;
if ((mBoard[3] == PLAYER_TWO &&
mBoard[4] == PLAYER_TWO &&
mBoard[5] == PLAYER_TWO) ||
(mBoard[12] == PLAYER_TWO &&
mBoard[13] == PLAYER_TWO &&
mBoard[14] == PLAYER_TWO) ||
(mBoard[21] == PLAYER_TWO &&
mBoard[22] == PLAYER_TWO &&
mBoard[23] == PLAYER_TWO) ||
(mBoard[3] == PLAYER_TWO &&
mBoard[12] == PLAYER_TWO &&
mBoard[21] == PLAYER_TWO) ||
(mBoard[4] == PLAYER_TWO &&
mBoard[13] == PLAYER_TWO &&
mBoard[22] == PLAYER_TWO) ||
(mBoard[5] == PLAYER_TWO &&
mBoard[14] == PLAYER_TWO &&
mBoard[23] == PLAYER_TWO) ||
(mBoard[3] == PLAYER_TWO &&
mBoard[13] == PLAYER_TWO &&
mBoard[23] == PLAYER_TWO) ||
(mBoard[5] == PLAYER_TWO &&
mBoard[13] == PLAYER_TWO &&
mBoard[21] == PLAYER_TWO))
return 3;
//set2 win chk
if ((mBoard[6] == PLAYER_ONE &&
mBoard[7] == PLAYER_ONE &&
mBoard[8] == PLAYER_ONE) ||
(mBoard[15] == PLAYER_ONE &&
mBoard[16] == PLAYER_ONE &&
mBoard[17] == PLAYER_ONE) ||
(mBoard[24] == PLAYER_ONE &&
mBoard[25] == PLAYER_ONE &&
mBoard[26] == PLAYER_ONE) ||
(mBoard[6] == PLAYER_ONE &&
mBoard[15] == PLAYER_ONE &&
mBoard[24] == PLAYER_ONE) ||
(mBoard[7] == PLAYER_ONE &&
mBoard[16] == PLAYER_ONE &&
mBoard[25] == PLAYER_ONE) ||
(mBoard[8] == PLAYER_ONE &&
mBoard[17] == PLAYER_ONE &&
mBoard[26] == PLAYER_ONE) ||
(mBoard[6] == PLAYER_ONE &&
mBoard[16] == PLAYER_ONE &&
mBoard[26] == PLAYER_ONE) ||
(mBoard[8] == PLAYER_ONE &&
mBoard[16] == PLAYER_ONE &&
mBoard[24] == PLAYER_ONE))
return 2;
if ((mBoard[6] == PLAYER_TWO &&
mBoard[7] == PLAYER_TWO &&
mBoard[8] == PLAYER_TWO) ||
(mBoard[15] == PLAYER_TWO &&
mBoard[16] == PLAYER_TWO &&
mBoard[17] == PLAYER_TWO) ||
(mBoard[24] == PLAYER_TWO &&
mBoard[25] == PLAYER_TWO &&
mBoard[26] == PLAYER_TWO) ||
(mBoard[6] == PLAYER_TWO &&
mBoard[15] == PLAYER_TWO &&
mBoard[24] == PLAYER_TWO) ||
(mBoard[7] == PLAYER_TWO &&
mBoard[16] == PLAYER_TWO &&
mBoard[25] == PLAYER_TWO) ||
(mBoard[8] == PLAYER_TWO &&
mBoard[17] == PLAYER_TWO &&
mBoard[26] == PLAYER_TWO) ||
(mBoard[6] == PLAYER_TWO &&
mBoard[16] == PLAYER_TWO &&
mBoard[26] == PLAYER_TWO) ||
(mBoard[8] == PLAYER_TWO &&
mBoard[16] == PLAYER_TWO &&
mBoard[24] == PLAYER_TWO))
return 3;
//set3 win chk
if ((mBoard[27] == PLAYER_ONE &&
mBoard[28] == PLAYER_ONE &&
mBoard[29] == PLAYER_ONE) ||
(mBoard[36] == PLAYER_ONE &&
mBoard[37] == PLAYER_ONE &&
mBoard[38] == PLAYER_ONE) ||
(mBoard[45] == PLAYER_ONE &&
mBoard[46] == PLAYER_ONE &&
mBoard[47] == PLAYER_ONE) ||
(mBoard[27] == PLAYER_ONE &&
mBoard[36] == PLAYER_ONE &&
mBoard[45] == PLAYER_ONE) ||
(mBoard[28] == PLAYER_ONE &&
mBoard[37] == PLAYER_ONE &&
mBoard[46] == PLAYER_ONE) ||
(mBoard[29] == PLAYER_ONE &&
mBoard[38] == PLAYER_ONE &&
mBoard[47] == PLAYER_ONE) ||
(mBoard[27] == PLAYER_ONE &&
mBoard[37] == PLAYER_ONE &&
mBoard[47] == PLAYER_ONE) ||
(mBoard[29] == PLAYER_ONE &&
mBoard[37] == PLAYER_ONE &&
mBoard[45] == PLAYER_ONE))
return 2;
if ((mBoard[27] == PLAYER_TWO &&
mBoard[28] == PLAYER_TWO &&
mBoard[29] == PLAYER_TWO) ||
(mBoard[36] == PLAYER_TWO &&
mBoard[37] == PLAYER_TWO &&
mBoard[38] == PLAYER_TWO) ||
(mBoard[45] == PLAYER_TWO &&
mBoard[46] == PLAYER_TWO &&
mBoard[47] == PLAYER_TWO) ||
(mBoard[27] == PLAYER_TWO &&
mBoard[36] == PLAYER_TWO &&
mBoard[45] == PLAYER_TWO) ||
(mBoard[28] == PLAYER_TWO &&
mBoard[37] == PLAYER_TWO &&
mBoard[46] == PLAYER_TWO) ||
(mBoard[29] == PLAYER_TWO &&
mBoard[38] == PLAYER_TWO &&
mBoard[47] == PLAYER_TWO) ||
(mBoard[27] == PLAYER_TWO &&
mBoard[37] == PLAYER_TWO &&
mBoard[47] == PLAYER_TWO) ||
(mBoard[29] == PLAYER_TWO &&
mBoard[37] == PLAYER_TWO &&
mBoard[45] == PLAYER_TWO))
return 3;
//set4 win chk
if ((mBoard[30] == PLAYER_ONE &&
mBoard[31] == PLAYER_ONE &&
mBoard[32] == PLAYER_ONE) ||
(mBoard[39] == PLAYER_ONE &&
mBoard[40] == PLAYER_ONE &&
mBoard[41] == PLAYER_ONE) ||
(mBoard[48] == PLAYER_ONE &&
mBoard[49] == PLAYER_ONE &&
mBoard[50] == PLAYER_ONE) ||
(mBoard[30] == PLAYER_ONE &&
mBoard[39] == PLAYER_ONE &&
mBoard[48] == PLAYER_ONE) ||
(mBoard[31] == PLAYER_ONE &&
mBoard[40] == PLAYER_ONE &&
mBoard[49] == PLAYER_ONE) ||
(mBoard[32] == PLAYER_ONE &&
mBoard[41] == PLAYER_ONE &&
mBoard[50] == PLAYER_ONE) ||
(mBoard[30] == PLAYER_ONE &&
mBoard[40] == PLAYER_ONE &&
mBoard[50] == PLAYER_ONE) ||
(mBoard[32] == PLAYER_ONE &&
mBoard[40] == PLAYER_ONE &&
mBoard[48] == PLAYER_ONE))
return 2;
if ((mBoard[30] == PLAYER_TWO &&
mBoard[31] == PLAYER_TWO &&
mBoard[32] == PLAYER_TWO) ||
(mBoard[39] == PLAYER_TWO &&
mBoard[40] == PLAYER_TWO &&
mBoard[41] == PLAYER_TWO) ||
(mBoard[48] == PLAYER_TWO &&
mBoard[49] == PLAYER_TWO &&
mBoard[50] == PLAYER_TWO) ||
(mBoard[30] == PLAYER_TWO &&
mBoard[39] == PLAYER_TWO &&
mBoard[48] == PLAYER_TWO) ||
(mBoard[31] == PLAYER_TWO &&
mBoard[40] == PLAYER_TWO &&
mBoard[49] == PLAYER_TWO) ||
(mBoard[32] == PLAYER_TWO &&
mBoard[41] == PLAYER_TWO &&
mBoard[50] == PLAYER_TWO) ||
(mBoard[30] == PLAYER_TWO &&
mBoard[40] == PLAYER_TWO &&
mBoard[50] == PLAYER_TWO) ||
(mBoard[32] == PLAYER_TWO &&
mBoard[40] == PLAYER_TWO &&
mBoard[48] == PLAYER_TWO))
return 3;
//set5 win chk
if ((mBoard[33] == PLAYER_ONE &&
mBoard[34] == PLAYER_ONE &&
mBoard[35] == PLAYER_ONE) ||
(mBoard[42] == PLAYER_ONE &&
mBoard[43] == PLAYER_ONE &&
mBoard[44] == PLAYER_ONE) ||
(mBoard[51] == PLAYER_ONE &&
mBoard[52] == PLAYER_ONE &&
mBoard[53] == PLAYER_ONE) ||
(mBoard[33] == PLAYER_ONE &&
mBoard[48] == PLAYER_ONE &&
mBoard[51] == PLAYER_ONE) ||
(mBoard[34] == PLAYER_ONE &&
mBoard[43] == PLAYER_ONE &&
mBoard[52] == PLAYER_ONE) ||
(mBoard[35] == PLAYER_ONE &&
mBoard[44] == PLAYER_ONE &&
mBoard[53] == PLAYER_ONE) ||
(mBoard[33] == PLAYER_ONE &&
mBoard[43] == PLAYER_ONE &&
mBoard[53] == PLAYER_ONE) ||
(mBoard[53] == PLAYER_ONE &&
mBoard[43] == PLAYER_ONE &&
mBoard[51] == PLAYER_ONE))
return 2;
if ((mBoard[33] == PLAYER_TWO &&
mBoard[34] == PLAYER_TWO &&
mBoard[35] == PLAYER_TWO) ||
(mBoard[42] == PLAYER_TWO &&
mBoard[43] == PLAYER_TWO &&
mBoard[44] == PLAYER_TWO) ||
(mBoard[51] == PLAYER_TWO &&
mBoard[52] == PLAYER_TWO &&
mBoard[53] == PLAYER_TWO) ||
(mBoard[33] == PLAYER_TWO &&
mBoard[48] == PLAYER_TWO &&
mBoard[51] == PLAYER_TWO) ||
(mBoard[34] == PLAYER_TWO &&
mBoard[43] == PLAYER_TWO &&
mBoard[52] == PLAYER_TWO) ||
(mBoard[35] == PLAYER_TWO &&
mBoard[44] == PLAYER_TWO &&
mBoard[53] == PLAYER_TWO) ||
(mBoard[33] == PLAYER_TWO &&
mBoard[43] == PLAYER_TWO &&
mBoard[53] == PLAYER_TWO) ||
(mBoard[53] == PLAYER_TWO &&
mBoard[43] == PLAYER_TWO &&
mBoard[51] == PLAYER_TWO))
return 3;
//set6 win chk
if ((mBoard[54] == PLAYER_ONE &&
mBoard[55] == PLAYER_ONE &&
mBoard[56] == PLAYER_ONE) ||
(mBoard[63] == PLAYER_ONE &&
mBoard[64] == PLAYER_ONE &&
mBoard[65] == PLAYER_ONE) ||
(mBoard[72] == PLAYER_ONE &&
mBoard[73] == PLAYER_ONE &&
mBoard[74] == PLAYER_ONE) ||
(mBoard[54] == PLAYER_ONE &&
mBoard[63] == PLAYER_ONE &&
mBoard[72] == PLAYER_ONE) ||
(mBoard[55] == PLAYER_ONE &&
mBoard[64] == PLAYER_ONE &&
mBoard[73] == PLAYER_ONE) ||
(mBoard[56] == PLAYER_ONE &&
mBoard[65] == PLAYER_ONE &&
mBoard[74] == PLAYER_ONE) ||
(mBoard[54] == PLAYER_ONE &&
mBoard[64] == PLAYER_ONE &&
mBoard[74] == PLAYER_ONE) ||
(mBoard[56] == PLAYER_ONE &&
mBoard[64] == PLAYER_ONE &&
mBoard[72] == PLAYER_ONE))
return 2;
if ((mBoard[54] == PLAYER_TWO &&
mBoard[55] == PLAYER_TWO &&
mBoard[56] == PLAYER_TWO) ||
(mBoard[63] == PLAYER_TWO &&
mBoard[64] == PLAYER_TWO &&
mBoard[65] == PLAYER_TWO) ||
(mBoard[72] == PLAYER_TWO &&
mBoard[73] == PLAYER_TWO &&
mBoard[74] == PLAYER_TWO) ||
(mBoard[54] == PLAYER_TWO &&
mBoard[63] == PLAYER_TWO &&
mBoard[72] == PLAYER_TWO) ||
(mBoard[55] == PLAYER_TWO &&
mBoard[64] == PLAYER_TWO &&
mBoard[73] == PLAYER_TWO) ||
(mBoard[56] == PLAYER_TWO &&
mBoard[65] == PLAYER_TWO &&
mBoard[74] == PLAYER_TWO) ||
(mBoard[54] == PLAYER_TWO &&
mBoard[64] == PLAYER_TWO &&
mBoard[74] == PLAYER_TWO) ||
(mBoard[56] == PLAYER_TWO &&
mBoard[64] == PLAYER_TWO &&
mBoard[72] == PLAYER_TWO))
return 3;
//set7 win chk
if ((mBoard[57] == PLAYER_ONE &&
mBoard[58] == PLAYER_ONE &&
mBoard[59] == PLAYER_ONE) ||
(mBoard[66] == PLAYER_ONE &&
mBoard[67] == PLAYER_ONE &&
mBoard[68] == PLAYER_ONE) ||
(mBoard[75] == PLAYER_ONE &&
mBoard[76] == PLAYER_ONE &&
mBoard[77] == PLAYER_ONE) ||
(mBoard[57] == PLAYER_ONE &&
mBoard[66] == PLAYER_ONE &&
mBoard[75] == PLAYER_ONE) ||
(mBoard[58] == PLAYER_ONE &&
mBoard[67] == PLAYER_ONE &&
mBoard[76] == PLAYER_ONE) ||
(mBoard[59] == PLAYER_ONE &&
mBoard[68] == PLAYER_ONE &&
mBoard[77] == PLAYER_ONE) ||
(mBoard[57] == PLAYER_ONE &&
mBoard[67] == PLAYER_ONE &&
mBoard[77] == PLAYER_ONE) ||
(mBoard[59] == PLAYER_ONE &&
mBoard[67] == PLAYER_ONE &&
mBoard[75] == PLAYER_ONE))
return 2;
if ((mBoard[57] == PLAYER_TWO &&
mBoard[58] == PLAYER_TWO &&
mBoard[59] == PLAYER_TWO) ||
(mBoard[66] == PLAYER_TWO &&
mBoard[67] == PLAYER_TWO &&
mBoard[68] == PLAYER_TWO) ||
(mBoard[75] == PLAYER_TWO &&
mBoard[76] == PLAYER_TWO &&
mBoard[77] == PLAYER_TWO) ||
(mBoard[57] == PLAYER_TWO &&
mBoard[66] == PLAYER_TWO &&
mBoard[75] == PLAYER_TWO) ||
(mBoard[58] == PLAYER_TWO &&
mBoard[67] == PLAYER_TWO &&
mBoard[76] == PLAYER_TWO) ||
(mBoard[59] == PLAYER_TWO &&
mBoard[68] == PLAYER_TWO &&
mBoard[77] == PLAYER_TWO) ||
(mBoard[57] == PLAYER_TWO &&
mBoard[67] == PLAYER_TWO &&
mBoard[77] == PLAYER_TWO) ||
(mBoard[59] == PLAYER_TWO &&
mBoard[67] == PLAYER_TWO &&
mBoard[75] == PLAYER_TWO))
return 3;
//set8 win chk
if ((mBoard[60] == PLAYER_ONE &&
mBoard[61] == PLAYER_ONE &&
mBoard[62] == PLAYER_ONE) ||
(mBoard[69] == PLAYER_ONE &&
mBoard[70] == PLAYER_ONE &&
mBoard[71] == PLAYER_ONE) ||
(mBoard[78] == PLAYER_ONE &&
mBoard[79] == PLAYER_ONE &&
mBoard[80] == PLAYER_ONE) ||
(mBoard[60] == PLAYER_ONE &&
mBoard[69] == PLAYER_ONE &&
mBoard[78] == PLAYER_ONE) ||
(mBoard[61] == PLAYER_ONE &&
mBoard[70] == PLAYER_ONE &&
mBoard[79] == PLAYER_ONE) ||
(mBoard[62] == PLAYER_ONE &&
mBoard[71] == PLAYER_ONE &&
mBoard[80] == PLAYER_ONE) ||
(mBoard[60] == PLAYER_ONE &&
mBoard[70] == PLAYER_ONE &&
mBoard[80] == PLAYER_ONE) ||
(mBoard[62] == PLAYER_ONE &&
mBoard[70] == PLAYER_ONE &&
mBoard[78] == PLAYER_ONE))
return 2;
if ((mBoard[60] == PLAYER_TWO &&
mBoard[61] == PLAYER_TWO &&
mBoard[62] == PLAYER_TWO) ||
(mBoard[69] == PLAYER_TWO &&
mBoard[70] == PLAYER_TWO &&
mBoard[71] == PLAYER_TWO) ||
(mBoard[78] == PLAYER_TWO &&
mBoard[79] == PLAYER_TWO &&
mBoard[80] == PLAYER_TWO) ||
(mBoard[60] == PLAYER_TWO &&
mBoard[69] == PLAYER_TWO &&
mBoard[78] == PLAYER_TWO) ||
(mBoard[61] == PLAYER_TWO &&
mBoard[70] == PLAYER_TWO &&
mBoard[79] == PLAYER_TWO) ||
(mBoard[62] == PLAYER_TWO &&
mBoard[71] == PLAYER_TWO &&
mBoard[80] == PLAYER_TWO) ||
(mBoard[60] == PLAYER_TWO &&
mBoard[70] == PLAYER_TWO &&
mBoard[80] == PLAYER_TWO) ||
(mBoard[62] == PLAYER_TWO &&
mBoard[70] == PLAYER_TWO &&
mBoard[78] == PLAYER_TWO))
return 3;
// Check for a tie
for (int i = 0; i < getBOARD_SIZE(); i++)
{
// if we find a number, then no one has won yet
if (mBoard[i] != PLAYER_ONE && mBoard[i] != PLAYER_TWO)
return 0;
}
// If we make it through the previous loop, all places are taken, so it's a tie
return 1;
}
}
MainActivity.javaはここに置くために大きなにあると私はから次のコードを削除した場合ので、それが正常に動作しています乱数の上で共有されているTicTacToeGame.javaファイルのgetComputerMove()関数が正常に動作します。しかし、AIは決して勝つことを試みたり、勝つのを止めたりしません。
// First see if there's a move O can make to win
for (int i = 0; i < getBOARD_SIZE(); i++)
{
if (mBoard[i] != PLAYER_ONE && mBoard[i] != PLAYER_TWO)
{
char curr = mBoard[i];
mBoard[i] = PLAYER_TWO;
if (checkForWinner() == 3)
{
setMove(PLAYER_TWO, i);
return i;
}
else
mBoard[i] = curr;
}
}
// See if there's a move O can make to block X from winning
for (int i = 0; i < getBOARD_SIZE(); i++)
{
if (mBoard[i] != PLAYER_ONE && mBoard[i] != PLAYER_TWO)
{
char curr = mBoard[i];
mBoard[i] = PLAYER_ONE;
if (checkForWinner() == 2)
{
setMove(PLAYER_TWO, i);
return i;
}
else
mBoard[i] = curr;
}
}
を表現するために、複数の1次元または2次元アレイを使用して検討する必要があります。あなたはそれほど多くの条件を必要としません。ループについて考えてみましょう... –
それぞれ最後に別の情報を与えなければならないので、ループは私のためのものではありません –
_今のところ私のためのループではありません_うん、それは見てほしくないよ –