背景资料:
我正在开发一个战舰游戏,在游戏中我有一个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;
}
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
比较是倒退
if((finalRow + 1) > (ROW_COUNT -1))
{
finalRow = finalRow + 1;
再次在
if((finalCol + 1) > (COLUMN_COUNT -1))
“如果我太大了,那就让我变大吧。”
可能还有其他人喜欢它。