回到程序的开头

时间:2016-12-31 12:40:04

标签: c#

我一直在研究这段时间,但现在我遇到了一个问题,当用户到达他/她的猜测结束时我需要让程序重新开始:

“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");
        }
    }

2 个答案:

答案 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;
}