Как позвонить на главную

1

Я изучал С# только пару дней, и мне было интересно, как я позвоню Main, чтобы перезапустить программу, когда игрок говорит "да" во время инструкции switch (когда его попросят снова сыграть)

    public static void Main(string[] args)
    {
        Console.WriteLine("Choose a gun to shoot at Toaster... ");
        Console.Write("rocket/sniper/rifle/pistol: ");
        string playersGunChoice = Console.ReadLine();
        Random randomweapondmg = new Random();
        int weapondmg = 0;
        switch (playersGunChoice.ToLower())
   {
        case "rocket":
                Console.WriteLine("You chose a rocket.");
                weapondmg = randomweapondmg.Next(75, 200);
                Console.WriteLine("Your rocket does " + weapondmg + " to Toaster.");
                break;
        case "sniper":
                Console.WriteLine("You chose a sniper.");
                weapondmg = randomweapondmg.Next(50, 150);
                Console.WriteLine("Your sniper does " + weapondmg + " to Toaster.");
                break;  
   }

        int ToasterHealth = 500;
        int ToastersLeftHp = ToasterHealth - weapondmg;
        Console.WriteLine("Toaster has " + ToastersLeftHp + " healthpoints left.");
        if (ToastersLeftHp != 0)
            Console.WriteLine("Shoot at Toaster again?");
        Console.Write("yes/no: ");
        string PlayAgain = Console.ReadLine();
            switch(PlayAgain.ToLower())
            {
                case "yes": //I want to call main here somehow
                    break;
                case "no":
                    break;
                default:
                    Console.WriteLine("That wasn't a yes or no.");
                    break;
         }
            if (ToastersLeftHp == 0)
                Console.WriteLine("You killed Toaster!");
            else if (ToastersLeftHp < 100)
                Console.WriteLine("Toaster is almost dead! He has " + ToastersLeftHp + " healthpoints left.");
    }
    }
}
  • 4
    Ты не должен. Посмотрите на создание меньших методов и узнайте о циклах.
  • 1
    Неуместно полностью переписывать свой вопрос, если у вас возникла новая проблема. Если у вас возникла новая проблема, задайте новый вопрос.
Показать ещё 3 комментария
Теги:
call
restart
main

2 ответа

3

Вы называете это так же, как и любой другой метод. Вы пишете имя и передаете ему аргументы, которые он ожидает:

Main(string[]{});

Если вы не хотите, чтобы программа продолжала делать то, что она делала после того, как она закончила вызов Main, вы должны убедиться, что после этой точки она перестанет выполняться.

Сказав все это, Main рекурсивный подход не является решением этой проблемы, о которой я бы посоветовал. Я бы настоятельно предложил просто применить цикл в вашем основном методе, который постоянно выполняет логику, которая у вас есть до тех пор, пока вы ее не прекратите, и каждую итерацию цикла завершите, когда вам нужно либо перезагрузить, либо полностью выполнить.

  • 0
    Я бы добавил, что причина не делать рекурсивную Main заключается в том, что если игрок выберет «играть снова» достаточное количество раз, программа завершится с ошибкой переполнения стека.
  • 0
    @phoog Я не уверен, может ли игрок снова играть сотни раз. В основном это сделало бы отладку / понимание / поддержание программы болезненной. Но да, эта проблема существует.
Показать ещё 2 комментария
0

В качестве ориентира вы должны попробовать несколько онлайн-руководств, которые помогут вам написать правильный код. Попытайтесь избежать вызова основного метода, поскольку это отправная точка для вашей программы, вместо этого используйте другую функцию или даже лучший другой класс для представления игры. эта функция\класс может вызывать ее самостоятельно или добавить внутренний цикл, который выполняется до тех пор, пока игра не будет выполнена. Также подумайте о том, чтобы разделить код на более мелкие функции, он был бы более удобным и удобочитаемым.

  • 0
    спасибо за совет, я все еще исследую, но застреваю в случайных частях (вы можете видеть мой новый пост)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню