C# 返回到程序的开始
我在这方面已经做了一段时间,但现在我遇到了一个问题,当用户猜到他/她的猜测结束时,我需要让程序重新开始: “Speler”+currentPlayer.PlayerName+“heeft geen gisignen meer!” 我有很多课程,我也会把它放在这里:C# 返回到程序的开始,c#,C#,我在这方面已经做了一段时间,但现在我遇到了一个问题,当用户猜到他/她的猜测结束时,我需要让程序重新开始: “Speler”+currentPlayer.PlayerName+“heeft geen gisignen meer!” 我有很多课程,我也会把它放在这里: class GetalSpel { public List<Speler> Spelers { get; set; } public int numberToGuess { get; set; }
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");
}
}
类GetalSpel
{
公共列表speler{get;set;}
公共整数猜测{get;set;}
public int maxantalgissingen{get;set;}
public int MaxGetal{get;set;}
公共bool Gestopt{get;set;}
公共GetalSpel()
{
Spelers=新列表();
//变量/属性的名称=新类名();
}
公共GetalSpel(int-maxantalgissingen,int-maxGetal)
{
Spelers=新列表();
this.maxantalgissingen=maxantalgissingen;
this.MaxGetal=MaxGetal;
随机=新随机();
numberToGuess=random.Next(1,MaxGetal+1);
}
public void EnterNewPlayer(字符串名称)
{
if(Spelers.Any(item=>item.PlayerName==name))
{
WriteLine(“Speler”+name+“是gebruik中的芦苇!”);
}
其他的
{
Speler播放器=新Speler();
player.PlayerName=名称;
添加(玩家);
Console.WriteLine(“Speler”+玩家+“是ingescreven”);
控制台。写线(“德鲁克进入绿色特甘”);
Console.ReadLine();
}
}
公共布尔猜测数(字符串名称、整数)
{
布尔猜测数=假;
Speler currentPlayer=Speler.Find(item=>item.PlayerName==name);
if(number==numberToGuess)
{
猜数=真;
Console.WriteLine(“Proficiat”+currentPlayer.PlayerName+”他是“+numberToGuess+”!”;
Gestopt=true;
}
else if(currentPlayer.Gissingen==maxantalgissingen)
{
Console.WriteLine(“Speler”+currentPlayer.PlayerName+“heeft geen gisignen meer!”);
}
其他的
{
currentPlayer.Gissingen=currentPlayer.Gissingen+1;
}
返回猜测编号;
}
}
斯佩勒班
{
公共字符串播放器名称{get;set;}
public int Gissingen{get;set;}
公共斯佩勒()
{
PlayerName=“”;
吉辛根=0;
}
公共Speler(字符串名称)
{
PlayerName=名称;
吉辛根=0;
}
}
班级计划
{
静态void Main(字符串[]参数)
{
int maxGetal=0,maxAantalGissingen=0;
字符串输入;
控制台。WriteLine(“Raad het getal spel!”);
做
{
Console.Write(“Geef het maximum getal in waarnaar kan geraden worden:”);
尝试
{
maxGetal=int.Parse(Console.ReadLine());
if(maxGetal一个简单的解决方案是将“Main”方法的代码移动到一个单独的方法(例如startNewName())。一旦应用程序到达该方法的最后一行(在本例中为“while(input!=“3”)”),再次调用startNewName()方法
(伪)代码:
private static void StartNewGame()
{
int maxGetal=0,maxAantalGissingen=0;
字符串输入;
控制台。WriteLine(“Raad het getal spel!”);
//做点什么
GetalSpel游戏=新的GetalSpel(maxAantalGissingen,maxGetal);
Console.Clear();
做
{
//做点什么
}while(输入!=“3”);
StartNewGame();//一个简单的解决方案是将“Main”方法的代码移动到一个单独的方法(例如StartNewGame())。一旦应用程序到达该方法的最后一行(在本例中为“while(input!=“3”)”),再次调用StartNewGame()方法
(伪)代码:
private static void StartNewGame()
{
int maxGetal=0,maxAantalGissingen=0;
字符串输入;
控制台。WriteLine(“Raad het getal spel!”);
//做点什么
GetalSpel游戏=新的GetalSpel(maxAantalGissingen,maxGetal);
Console.Clear();
做
{
//做点什么
}while(输入!=“3”);
StartNewGame();//前面的方法肯定比我的好,作为另一种解决方案,您可以使用标签和转到
public static void Main()
{
start:
//Some logic
goto start;
}
前面的方法肯定比我的好,因为另一种解决方案可以使用标签和转到
public static void Main()
{
start:
//Some logic
goto start;
}
一个简单的解决方案是将主方法的代码移动到一个单独的方法(例如StartNewGame())。一旦应用程序到达该方法的最后一行(while(input!=“3”)),再次调用StartNewGame()。谢谢!这应该可以解决问题,我没有想到。我建议您将其作为答案输入,以便我可以将其标记为正确:)我很高兴能够提供帮助。一个简单的解决方案是将主方法的代码移动到一个单独的方法(例如startNewName())。一旦应用程序到达该方法的最后一行(while(input!=“3”)),调用startNewName()再一次。谢谢你!这应该能解决问题,我没想到。我建议你把它作为一个答案,这样我就可以把它标记为正确:)我很高兴我能帮上忙。