2013-04-08 106 views
-1

我正在网上搜索几个小时,我无法找到适合我的正确答案。重新启动一个java控制台应用程序代码

所以..我做了一个名为'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

+1

制作游戏课程的新对象并重新开始不是更简单吗?通过发送命令行参数而不是重新启动进程? – nunespascal 2013-04-08 11:10:04

回答

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

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

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

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

相关问题