背景资料:
我正在开发一款战舰游戏,在游戏中我有一个 10x10 int[][](网格)。
我开发了一种方法,只要尚未尝试过相同的位置,它就会尝试命中该阵列或网格上的单元格。(这是为了与我对战的计算机)。
public boolean randomShot()
{
int row;
int col;
boolean wasHit = false;
boolean complete = false;
while (complete == false)
{
// Randomly generate a row and column
row = randomizer.nextInt(ROW_COUNT);
col = randomizer.nextInt(COLUMN_COUNT);
if(compShots.contains("" + row + col) == false)
{
complete = true;
if(checkHit(row, col) == true)
{
wasHit = true;
}
compShots.add("" + row + col);
}
}
return wasHit;
}
上述方法效果很好,我很满意。
问题 :
我想开发一种基于上述方法的方法,但是在某种意义上说,如果他击中第 3 行和第 3 列,则计算机的行为会更聪明一些。然后它接下来会尝试击中第 3 行和第 4 列等。但是如果下一列或下一行超出了棋盘的边界,那么它将尝试以另一种方式进行。
while 循环目前正在使游戏崩溃,知道为什么吗?
这是我必须用更多的大脑来打阵列的方法可以这么说
public boolean randomShotClever()
{
int row;
int col;
boolean wasHit = false;
boolean complete = false;
while (complete == false)
{
// Randomly generate a row and column
row = randomizer.nextInt(ROW_COUNT);
col = randomizer.nextInt(COLUMN_COUNT);
if(previousRows.size() == 0 || compShots.contains("" + (previousRows.size() -1) + (previousCols.size() -1) ))
{
finalRow = previousRows.get(previousRows.size());
if((finalRow + 1) < (ROW_COUNT -1))
{
finalRow = finalRow + 1;
}
else
{
finalRow = row;
}
finalCol = previousCols.get(previousCols.size());
if((finalCol + 1) < (COLUMN_COUNT -1 ))
{
finalCol = finalCol + 1;
}
else
{
finalCol = col;
}
if(compShots.contains("" + finalRow + finalCol) == false)
{
complete = true;
if(checkHit(finalRow, finalCol) == true)
{
previousCols.add(finalCol);
previousRows.add(finalRow);
wasHit = true;
}
compShots.add("" + finalRow + finalCol);
}
}
}
return wasHit;
}
提前感谢您提供的任何帮助。