生成计算机移动
问题描述:
我做了一个井字棋游戏,虽然我有一个正常工作的计算机代码的举动,似乎只是去从左至右一刀切,而不是选择一个随机板插槽。生成计算机移动
下面是我对计算机移动代码:
public static void compTurn(char[][] board, char computer)
{
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board.length; j++)
{
if(board[i][j] == ' ')
{
board[i][j] = computer;
return;
}
}
}
}
答
你现在正在做的权利是通过空间顺序去,如果他们是开放的检查。如果是,电脑将移到那里。你需要做的是选择一个随机点直到找到一个点。更好的是,你可以保留一个阵列中被占用的位置列表,并尝试移动到空位。
这是一个基本的解决方案,但在使用阵列的所有诚实是一个更好的路要走,无论是在性能和优雅条款。你基本上会创建2个数组;一个包含占用的插槽(用于存放占用该插槽的玩家),另一个用于存放空白区域的阵列(可能是一个简单的布尔值,表示可以移动的区域)。每转一圈,检查空置阵列中是否有空位,随机移动。
public static void compTurn(char[][] board, char computer)
{
Random rand;
boolean moved = false;
/* If we haven't moved, look for a space to move to
max = the highest space you have
min = the lowest space you have
*/
while (!moved) {
int randomSpace = rand.nextInt((max - min) + 1) + min;
/* I leave this part for you to figure out */
if(thisSpace == ' ')
{
//make the computer move to this space
moved = true;
}
};
}
由于这是很显然的任务,我留下了一些空白,为您自己填写,但是这应该是你在找什么。
你的代码在哪里产生一个随机移动?现在你有嵌套的数组一行一行地排队。 – Ryan
我没有用于生成随机移动的代码。我所拥有的全部代码都是将计算机棋子移动到棋盘上,除非棋子被填满。我需要一些帮助来产生一个随机移动。如果我上传了整个代码,会更容易吗? @Ryan – USC23
这种气味的类分配:)但一个简单的方法:使所有空的x,y插槽数组,然后使用arrayOfEmptySlots [rand()%arrayOfEmptySlots.length]。而且你应该弄清楚具体细节:) – Diniden