-1

我在互联网上搜索了几个小时,但找不到适合我的正确答案。

所以.. 我制作了一款名为“seabattle”的游戏 玩完该游戏后,控制台出现了再次玩的问题。

System.out.println("Well done! " + whosturn.getName() + ". A ship down!" );
                        System.out.println("Hurraaaaaayyyyy, All boats down!!");
                        System.out.println("Do you want to play this game again? (y/n) ");
                        input = scanner.next().toLowerCase();
                        if(input == "y"){
                            System.out.println("The game should start again now..");
                            System.out.println("Butttttttt, I don't know how to...");
                        }

                        else{
                            System.out.println("Thank you for player Battleships!");
                            System.out.println("See you next time ;)");
                        }
                    }
                    else{
                        FiredPosition.setDisplayValue('*');
                        System.out.println("Good job, you hit a ship!");
                        switchTurn();
                    }

如果用户在控制台中输入 y。游戏应该重新开始。

我读了一些关于 Main(args) 或类似的东西。这对我不起作用,因为这是另一门课。

我希望你们能帮助我吗?

巧欧

4

2 回答 2

1

一个简单的答案是:无论你在开始游戏时做了什么,当你检测到“y”时再做一次。

但是,更深入的答案涉及使用对象来存储和更新游戏状态,从您的描述中无法完全清楚您当前是否正在这样做。因此,如果它是战舰类型的游戏,则该对象可能包含游戏区域的 2d 数组,并且可能包含一个变量来存储轮到谁了。该对象将具有“初始化”方法,您可以在其中随机选择船只在游戏区域中的位置,设置轮到谁的值等。

你的 main 方法会与这个对象交互,所以它会调用游戏对象的初始化方法,并且在每回合之后它会调用另一个方法(例如'isGameFinished')来检查游戏是否结束。isGameFinished 方法将检查是否所有船只都已被摧毁,如果是则返回 true。如果它返回 true,那么将提示用户进行新游戏。如果他们输入'y​​',那么你可以创建一个全新的游戏状态对象,或者只是再次调用游戏状态的初始化方法。然后,您将拥有一个新的游戏状态来开始新的游戏。

于 2013-04-08T12:31:33.953 回答
1

如果你的主班 SeaBattle 目前是这样的:

public class SeaBattle {
 public static void main(String[] args) {
   ...
 }
}

您可以通过以下方式更改它:

public class SeaBattle {
 private static String[] args;
 public static void run() {
   //do the same than main() previously
 }
 public static void main(String[] args) {
   SeaBattle.args = args;
   run();
 }
}

然后重新启动游戏,

SeaBattle.run();
于 2013-04-08T12:15:26.807 回答