Java I';我试图制作一个基于控制台的战舰游戏,但我不';我不知道如何设置船只

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

在这里,我检查我的新船是否干扰我的第一艘船。整个数组中填充了包含“.”字符的对象,但第一个ship所在的位置除外

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
}