2015-12-22 170 views
1

所以我想用C#在控制台应用程序中创建一个dartgame。C#控制台应用程序Dartgame

这是据我已经ATM得到:

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循环时的球员之一已经达到了分数301以上,它将结束while循环帮助。我还需要一种方法将比分保持在列表中或类似的东西中。但是,我被困住了,所以任何帮助都很受欢迎! :)

很遗憾,如果代码是有点乱

提前感谢!

回答

1

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

  1. 添加一个while循环周围的foreach(玩家...):
  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); 
        } 
        } 
    } 
    
+0

谢谢!我只是有点困惑,我应该把这个方法:player.getTotalScore();? @Kyle Fransham – oOMelon

+0

由于您有玩家对象的尝试列表,您可以使用 int getTottalScore(){ int sum = 0; foreach(尝试尝试att){ sum + = att.GetScore(); } } 总结所有的尝试。 –

+0

啊我在那个方向想着。我似乎有点修补了一下。代码工作正常,但if语句永远不会因为某种原因而被解雇,无论用户获得多少点。 while循环只是继续前进。感谢您的帮助!这是非常appriciated! @Kyle Fransham – oOMelon