基本C#骰子游戏

基本C#骰子游戏,c#,dice,C#,Dice,我对c#和一般的编码都是新手。为了提高我的技能,我尝试创建一个基本游戏,两名玩家掷骰子并记录他们的得分。该球员以20分获胜。每个玩家轮流掷骰子,将第一个骰子加到第二个骰子上,以此类推,直到其中一个达到20。如果掷6,玩家可以再次掷骰子 我目前的代码是: do { 控制台。写入(“输入播放器1的名称:”); Player[0]=Console.ReadLine(); 控制台。写入(“输入播放器2的名称:”); Player[1]=Console.ReadLine(); 随机骰子随机=新随机();

我对c#和一般的编码都是新手。为了提高我的技能,我尝试创建一个基本游戏,两名玩家掷骰子并记录他们的得分。该球员以20分获胜。每个玩家轮流掷骰子,将第一个骰子加到第二个骰子上,以此类推,直到其中一个达到20。如果掷6,玩家可以再次掷骰子

我目前的代码是:


do
{
控制台。写入(“输入播放器1的名称:”);
Player[0]=Console.ReadLine();
控制台。写入(“输入播放器2的名称:”);
Player[1]=Console.ReadLine();
随机骰子随机=新随机();
掷骰子[0]=DiceRandom.Next(1,7);
int i=0;

而(i您的问题是您正在使用以下行重置以前的分数:

PlayerTotal[0] = DiceThrow[0];
PlayerTotal[1] = DiceThrow[1];
您应该将其更改为使用
+=
,如下所示:

PlayerTotal[0] += DiceThrow[0];
PlayerTotal[1] += DiceThrow[1];
这就像说:
PlayerTotal[0]=PlayerTotal[0]+DiceThrow[0];

除此之外,代码中还有一些问题

例如,在代码开头有一个
Do
,但在
s时有两个
。。。
您可能希望创建一个带有AND语句的
While

例如: //获取用户名

 do
 {
    // All your Dice throwing logic
 }
 while (PlayerTotal[0] != 20 && PlayerTotal[1] != 20);

您的代码有许多问题:

  • 你在循环中询问玩家的名字
  • 您正在初始化循环内的随机生成器(这可能会在不同的循环上导致相同的结果,因为随机生成器可以使用相同的种子)
  • 您正在使用=而不是+=
  • 停止条件是totals==20,而不是total<20
  • 您使用的是两个while语句,而不是AND(&&&)条件
  • 这只是一个简单的概述

    这可以是一个解决方案:

      Console.Write("Enter the name of Player 1: ");
      Player[0] = Console.ReadLine();
      Console.Write("Enter the name of Player 2: ");
      Player[1] = Console.ReadLine();
    
      Random DiceRandom = new Random();
    
      do
        {
    
            int i = 0;
            while (i <= 1)
            {
                int thisThrow = DiceRandom.Next(1, 6);
                DiceThrow[0 + i] += thisThrow;
                Console.ReadLine();
                Console.Write(Player[0 + i] + " rolled a " + thisThrow);
                if (thisThrow != 6) i++;
            }
    
            Console.ReadLine();
            PlayerTotal[0] += DiceThrow[0];
            PlayerTotal[1] += DiceThrow[1];
    
    
            Console.ReadLine();
            Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
            Console.ReadLine();
            Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
            Console.ReadLine();
    
        }
        while (PlayerTotal[0] < 20 && PlayerTotal[1] < 20);
    
    Console.Write(“输入播放器1的名称:”);
    Player[0]=Console.ReadLine();
    控制台。写入(“输入播放器2的名称:”);
    Player[1]=Console.ReadLine();
    随机骰子随机=新随机();
    做
    {
    int i=0;
    而(i
    inti=0;
    
    虽然(感谢您的回复和关注点,但编码对我来说是全新的,所以我没有意识到这些关注点。您提供的解决方案几乎是完美的。除非玩家先掷6,然后掷2,否则它会将数字2保存为玩家的总数,而不是8。是的,我已更正代码:DiceThrow[0+i]应该递增(使用+=)而不是覆盖(使用=)它会将数字相加,但玩家可以滚动大于6的数字,这是不允许的。你知道我如何解决这个问题吗?这是因为你正在使用Next(1,7),这将返回1到7的数字,我想你应该使用Next(1,6)以停止在6。Next(minValue,MaxValue)包括边界我得到的结果是:玩家1掷12,玩家2掷8
      Console.Write("Enter the name of Player 1: ");
      Player[0] = Console.ReadLine();
      Console.Write("Enter the name of Player 2: ");
      Player[1] = Console.ReadLine();
    
      Random DiceRandom = new Random();
    
      do
        {
    
            int i = 0;
            while (i <= 1)
            {
                int thisThrow = DiceRandom.Next(1, 6);
                DiceThrow[0 + i] += thisThrow;
                Console.ReadLine();
                Console.Write(Player[0 + i] + " rolled a " + thisThrow);
                if (thisThrow != 6) i++;
            }
    
            Console.ReadLine();
            PlayerTotal[0] += DiceThrow[0];
            PlayerTotal[1] += DiceThrow[1];
    
    
            Console.ReadLine();
            Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
            Console.ReadLine();
            Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
            Console.ReadLine();
    
        }
        while (PlayerTotal[0] < 20 && PlayerTotal[1] < 20);
    
        int i = 0;
        while (i <= 1)
        {
            int thisThrow = DiceRandom.Next(1, 6);
            DiceThrow[0 + i] += thisThrow;
            Console.ReadLine();
            Console.Write(Player[0 + i] + " rolled a " + thisThrow);
            if (thisThrow != 6) i++;
        }
    
        Console.ReadLine();
        PlayerTotal[0] += DiceThrow[0];
        PlayerTotal[1] += DiceThrow[1];
    
    
        Console.ReadLine();
        Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
        Console.ReadLine();
        Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
        Console.ReadLine();