C#控制台应用程序Dartgame

时间:2015-12-22 22:26:00

标签: c# .net

所以我试图用C#在Console Application中创建一个dartgame。

据我所知,这是:

class Program
{
    static void Main(string[] args)
    {
        Game gameOn = new Game();
        gameOn.PlayGame();
    }

    class Game
    {
        private List<Players> playerList = new List<Players>();

        public void AddPlayers(string name)
        {
            Players names = new Players(name);
            playerList.Add(names);
        }

        public void PlayGame()
        {
            Console.WriteLine("Välkommen till Dartspelet! Tryck valfri knapp för att fortsätta...");
            Console.ReadLine();
            Console.WriteLine("Skriv in antal spelare. Ni kommer också att möta en Dator.");
            Console.WriteLine();
            int players = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < players; i++)
            {
                Console.Write("Skriv in spelarens namn: ");
                string playersNames = Console.ReadLine();
                AddPlayers(playersNames);
            }

            Console.WriteLine();
            Console.WriteLine("Spelet har börjat!");
            Console.WriteLine();

                foreach (Players name in playerList)
                {

                    Console.WriteLine("Datorn börjar att kasta... Var god vänta...");
                    System.Threading.Thread.Sleep(2000);
                    Random rng = new Random();
                    int ranAttempt1 = rng.Next(0, 21);
                    int ranAttempt2 = rng.Next(0, 21);
                    int ranAttempt3 = rng.Next(0, 21);
                    Attempts result = new Attempts(ranAttempt1, ranAttempt2, ranAttempt3);

                    Console.WriteLine("Datorn Fick " + result.GetScore() + " på 3 kast.");
                    Console.ReadLine();

                    Console.WriteLine(name + "s Tur! ");

                    Console.WriteLine("Skriv in Poäng mellan 0-20 för kast 1:");
                    int attempt1 = Int32.Parse(Console.ReadLine());

                    Console.WriteLine("Skriv in Poäng mellan 0-20 för kast 2:");
                    int attempt2 = Int32.Parse(Console.ReadLine());

                    Console.WriteLine("Skriv in Poäng mellan 0-20 för kast 3:");
                    int attempt3 = Int32.Parse(Console.ReadLine());

                    Attempts result1 = new Attempts(attempt1, attempt2, attempt3);

                    Console.WriteLine(name + " Fick " + result1.GetScore());

            }
            Console.ReadLine();
        }
    }

    class Attempts
    {
        private int attempt1;
        private int attempt2;
        private int attempt3;

        public Attempts(int attempt1 = 0, int attempt2 = 0, int attempt3 = 0)
        {
            this.attempt1 = attempt1;
            this.attempt2 = attempt2;
            this.attempt3 = attempt3;
        }

        public int GetScore()
        {
            return attempt1 + attempt2 + attempt3;
        }
    }
    class Players
    {
        private string Name { get; set; }
        public List<Attempts> attempts = new List<Attempts>();


        public Players(string name = "")
        {
            Name = name;
        }

        public override string ToString()
        {
            return Name;
        }
    }
}

我需要帮助在foreach循环周围创建一个while循环,当其中一个玩家达到301分或以上时,它将结束。我还需要一种方法来将得分保持在List或类似的东西中。但是,我被卡住了所以任何帮助都非常受欢迎! :)

如果代码有点乱,那就很抱歉

提前致谢!

1 个答案:

答案 0 :(得分:1)

嗯,你已经有了玩家尝试的列表。你可以:

  1. 在foreach周围添加一个while循环(玩家......):
  2. 在尝试完成后附加尝试。
  3. 在每个玩家的尝试之后,计算总得分。
  4. 打印得分并退出,如果总得分> 301

    while(true) 
    {
    
      foreach(Players name in playerList)
      {
        // existing code here
    
        // you should encapsulate attempts with getter and setter, 
        // but according to your Players class this will work. 
        name.attempts.add(result1); 
    
        // now sum up the total results for the player
        // exercise for the reader. 
        int totalResults = player.getTotalScore();
    
        if(totalResults > 301) 
        {
             Console.WriteLine("Player " + name.getName() + " won the game!");
             Environment.exit(0);
         }
      } 
    }