重新启动java控制台应用程序代码

时间:2013-04-08 11:07:18

标签: java console restart relaunch

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

所以..我制作了一款名为'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)或类似内容的内容。这对我不起作用,因为这是另一个类。

我希望你们能帮帮我吗?

Ciaoo

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

一个简单的答案是:无论你做什么来开始游戏,当你发现'y'时再做一次。

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

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