Java I';我试图制作一个基于控制台的战舰游戏,但我不';我不知道如何设置船只
在这里,我检查我的新船是否干扰我的第一艘船。整个数组中填充了包含“.”字符的对象,但第一个ship所在的位置除外Java I';我试图制作一个基于控制台的战舰游戏,但我不';我不知道如何设置船只,java,loops,if-statement,console,Java,Loops,If Statement,Console,在这里,我检查我的新船是否干扰我的第一艘船。整个数组中填充了包含“.”字符的对象,但第一个ship所在的位置除外 int randRow = rand.nextInt(rows-4); int randColumn = rand.nextInt(columns); 如果我的新船不适合,我想用不同的随机值重试,但我不知道如何重试。基本上你不知道如何再次生成随机数。用下面的方法 if(field[randRow][randColumn].value == '.' && f
int randRow = rand.nextInt(rows-4);
int randColumn = rand.nextInt(columns);
如果我的新船不适合,我想用不同的随机值重试,但我不知道如何重试。基本上你不知道如何再次生成随机数。用下面的方法
if(field[randRow][randColumn].value == '.' &&
field[randRow][randColumn+1].value == '.' &&
field[randRow][randColumn+2].value == '.' &&
field[randRow][randColumn+3].value == '.'){
field[randRow][randColumn] = new Square('b');
field[randRow+1][randColumn] = new Square('b');
field[randRow+2][randColumn] = new Square('b');
field[randRow+3][randColumn] = new Square('b');
} else{
我知道这是你的第一个问题。为了便于将来参考,最好将逻辑与代码一起添加。就像战舰占据了四个位置。与这个问题相关的还有一个建议。制作类似于
isLocationEmpty
和placeBattleShip
的方法。这将更容易阅读代码then@dandeman如果这就是你想要的,那么投票/接受答案。最后一件事,我希望你参加了丹德曼之旅。看看并思考一下我对这个问题的评论。如果你的代码很容易阅读,你会看到像这样的答案更容易。否则,您将看到数组和循环,而不是实际的逻辑。
while(true) {
//generate random number here
if (can place battleship) {
place battleship
break //placed battleship so no need to retry. stop retrying
}
//else we will loop till we can place the battleship
}