我一直在研究这段时间,但现在我遇到了一个问题,当用户到达他/她的猜测结束时我需要让程序重新开始:
“Speler”+ currentPlayer.PlayerName +“heeft geen gisignen meer!”
我有很多课程,我也会把它放在这里:
class GetalSpel
{
public List<Speler> Spelers { get; set; }
public int numberToGuess { get; set; }
public int MaxAantalGissingen { get; set; }
public int MaxGetal { get; set; }
public bool Gestopt { get; set; }
public GetalSpel()
{
Spelers = new List<Speler>();
//name of variable/property = new Classname();
}
public GetalSpel(int maxAantalGissingen, int maxGetal)
{
Spelers = new List<Speler>();
this.MaxAantalGissingen = maxAantalGissingen;
this.MaxGetal = maxGetal;
Random random = new Random();
numberToGuess = random.Next(1, MaxGetal + 1);
}
public void EnterNewPlayer(string name)
{
if (Spelers.Any(item => item.PlayerName == name))
{
Console.WriteLine("Speler " + name + " is reeds in gebruik!");
}
else
{
Speler player = new Speler();
player.PlayerName = name;
Spelers.Add(player);
Console.WriteLine("Speler " + player + " is ingescreven.");
Console.WriteLine("Druk enter om verder te gaan");
Console.ReadLine();
}
}
public bool GuessNumber(string name, int number)
{
bool guessNumber = false;
Speler currentPlayer = Spelers.Find(item => item.PlayerName == name);
if (number == numberToGuess)
{
guessNumber = true;
Console.WriteLine("Proficiat " + currentPlayer.PlayerName + " het getal was" + numberToGuess + "!");
Gestopt = true;
}
else if (currentPlayer.Gissingen == MaxAantalGissingen)
{
Console.WriteLine("Speler " + currentPlayer.PlayerName + "heeft geen gisignen meer!");
}
else
{
currentPlayer.Gissingen = currentPlayer.Gissingen + 1;
}
return guessNumber;
}
}
class Speler
{
public string PlayerName { get; set; }
public int Gissingen { get; set; }
public Speler()
{
PlayerName = "";
Gissingen = 0;
}
public Speler(string Name)
{
PlayerName = Name;
Gissingen = 0;
}
}
class Program
{
static void Main(string[] args)
{
int maxGetal = 0, maxAantalGissingen = 0;
string input;
Console.WriteLine("Raad het getal spel!");
do
{
Console.Write("Geef het maximum getal in waarnaar kan geraden worden: ");
try
{
maxGetal = int.Parse(Console.ReadLine());
if (maxGetal <= 0)
{
Console.WriteLine("Getal moet positief zijn!");
}
}
catch (FormatException)
{
Console.WriteLine("Moet een getal zijn!");
}
} while (maxGetal <= 0);
do
{
Console.WriteLine("Geef het maximum aantal pogingen in: ");
try
{
maxAantalGissingen = int.Parse(Console.ReadLine());
if (maxAantalGissingen <= 0)
{
Console.WriteLine("Getal moet positief zijn!");
}
}
catch (FormatException)
{
Console.WriteLine("Moet een getal zijn!");
}
} while (maxAantalGissingen <= 0);
GetalSpel game = new GetalSpel(maxAantalGissingen, maxGetal);
Console.Clear();
do
{
Console.WriteLine("1. Schrijf Speler in");
Console.WriteLine("2. Start Spel");
Console.WriteLine("3. Stop");
Console.Write("> ");
input = Console.ReadLine();
switch (input)
{
case "1":
{
try
{
Speler speler = new Speler();
Console.WriteLine("Geeft de naam van de nieuwe speler ");
speler.PlayerName = Console.ReadLine();
game.Spelers.Add(speler);
}
catch (FormatException)
{
Console.WriteLine("Het naam mocht geen nummers bevatten.");
throw;
}
}
break;
case "2":
do
{
Console.WriteLine("Nieuwe gissing");
Console.WriteLine("Geef de naam van de speler: ");
string chosenPlayer = Console.ReadLine();
Console.WriteLine("Geef het getal: ");
int chosenNumber = int.Parse(Console.ReadLine());
try
{
game.GuessNumber(chosenPlayer, chosenNumber);
}
catch (NullReferenceException)
{
Console.WriteLine("Speler " + chosenPlayer + " is niet ingeschreven!");
}
} while (game.Gestopt == false);
Console.WriteLine("Druk op enter om verder te gaan");
Console.ReadLine();
break;
default:
break;
case "3":
{
Environment.Exit(0);
}
break;
}
} while (input != "3");
}
}
答案 0 :(得分:3)
一个简单的解决方案是移动&#39; Main&#39;单独方法的方法(例如StartNewGame())。一旦应用程序到达方法的最后一行(在这种情况下&#39; while(输入!=&#34; 3&#34;)&#39;再次调用StartNewGame()方法。
(伪)代码:
private static void StartNewGame()
{
int maxGetal = 0, maxAantalGissingen = 0;
string input;
Console.WriteLine("Raad het getal spel!");
// Do something
GetalSpel game = new GetalSpel(maxAantalGissingen, maxGetal);
Console.Clear();
do
{
// Do something
} while (input != "3");
StartNewGame(); // <--- This is the call to solve the described issue.
}
答案 1 :(得分:2)
以前的方法肯定比我的好,因为另一种解决方案是你可以使用标签和转到。
public static void Main()
{
start:
//Some logic
goto start;
}