2013-04-08 5 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

ответ

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».

Однако более подробный ответ предполагает использование объекта для хранения и обновления состояния игры, это не совсем ясно из вашего описания, выполняете ли вы это сейчас. Так что если это игра типа линкоров, объект может содержать 2d-массив для игровой зоны и, возможно, переменную для хранения, чей ход. Этот объект будет иметь метод «initialize», в котором вы произвольно выбираете, где находятся корабли в игровой зоне, задайте значение, для которого он находится, и т. Д.

Ваш основной метод будет взаимодействовать с этим объектом, чтобы он вызывал исходный метод игрового объекта, и после каждого хода он будет вызывать другой метод (например, 'isGameFinished'), чтобы проверить, закончилась ли игра. Метод isGameFinished будет проверять, были ли все корабли уничтожены, и если это так, верните true. Если он вернет true, пользователю будет предложено ввести новую игру. Если они вводят «y», вы можете либо создать совершенно новый объект состояния игры, либо снова вызвать метод инициализации состояния игры. После этого у вас будет новое игровое состояние, чтобы начать новую игру.

Смежные вопросы