Я изучал С# только пару дней, и мне было интересно, как я позвоню 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.");
}
}
}
Вы называете это так же, как и любой другой метод. Вы пишете имя и передаете ему аргументы, которые он ожидает:
Main(string[]{});
Если вы не хотите, чтобы программа продолжала делать то, что она делала после того, как она закончила вызов Main
, вы должны убедиться, что после этой точки она перестанет выполняться.
Сказав все это, Main
рекурсивный подход не является решением этой проблемы, о которой я бы посоветовал. Я бы настоятельно предложил просто применить цикл в вашем основном методе, который постоянно выполняет логику, которая у вас есть до тех пор, пока вы ее не прекратите, и каждую итерацию цикла завершите, когда вам нужно либо перезагрузить, либо полностью выполнить.
В качестве ориентира вы должны попробовать несколько онлайн-руководств, которые помогут вам написать правильный код. Попытайтесь избежать вызова основного метода, поскольку это отправная точка для вашей программы, вместо этого используйте другую функцию или даже лучший другой класс для представления игры. эта функция\класс может вызывать ее самостоятельно или добавить внутренний цикл, который выполняется до тех пор, пока игра не будет выполнена. Также подумайте о том, чтобы разделить код на более мелкие функции, он был бы более удобным и удобочитаемым.