【问题标题】:Dice Game made with c#用c#制作的骰子游戏
【发布时间】:2017-05-03 00:26:11
【问题描述】:

所以我正在为我的作业制作一个骰子游戏,但我被困住了,因为我不知道如何制作它希望我包含的 2 个功能。这些功能是:

如果玩家在 5 个骰子中掷出 3,4 或 5 个同类,则游戏会为玩家分配点数,但如果玩家掷出 2 个同类,他可以将其他 3 个骰子重新掷 2 次(即骰子不是 2 的那种)所以如果他第一次滚动并且没有得到 3,4 或 5 的一种,他第二次重新滚动,但如果他得到例如 3,4 或 5一种在他第一次重投时他不会重投,第二次重投也是如此,但如果在第二次重投后他没有得到 3,4 或 5 的一种,他得到 0 分。

一旦玩家或 AI/2nd 玩家达到某个值,即他们的分数达到 50,游戏就会结束。

这是我目前的代码:

class Game
    {
        public static void Main(string[] args)

        {

            Console.BackgroundColor = ConsoleColor.Red;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("Press enter to Start Game");
            Console.ReadKey();
            Console.ResetColor();
            Console.Clear();


            bool gameProg = false;
            while (gameProg == false)
            {
                Console.WriteLine("Press Enter to roll your 5 Die");
                Console.ReadKey();
                Console.WriteLine();
                Die.DieGen();
                Console.ReadLine();
                Console.Clear();
            }

           /* if(Score = 50)
            {
                Console.WriteLine("\nCongratulation you have won press enter to exit");
                Console.ReadKey();
            }*/
        }

    }
    class Die
    {
        public static void DieGen()
        {
            int i;
            int[] Score = new int[50];
            Random rnd = new Random();
            int die1 = rnd.Next(1, 6 + 1);
            int die2 = rnd.Next(1, 6 + 1);
            int die3 = rnd.Next(1, 6 + 1);
            int die4 = rnd.Next(1, 6 + 1);
            int die5 = rnd.Next(1, 6 + 1);
            Console.Write("You Rolled {0}", die1);
            Console.Write(" {0}", die2);
            Console.Write(" {0}", die3);
            Console.Write(" {0}", die4);
            Console.Write(" {0}", die5);

            int sum = die1 + die2 + die3 + die4 + die5;

            Console.WriteLine("Your Score {0}", sum);

            Score[sum]=Convert.ToInt32(Console.ReadLine());

            int tsum = Score.Sum();
            Console.WriteLine("Your Total Score {0}",tsum);
            Console.ReadLine();


        }
    }
    class Player
    {
        public static void Score()
        {
            int ScoreSum;


        }
    }

目前,我正在测试是否可以获取一个数组来存储骰子总和的输出数字并将它们存储并将它们相加并为其设置一个值,以便一旦总和达到 50 游戏结束并终止循环,但它没有用(即不是我应该为分配做的事情,但想看看我是否可以使用从滚动 3,4 或 5 中获得的分数来处理数组并将其总结和显示它)。

任何帮助将不胜感激。

【问题讨论】:

  • @Alexis Côté 为什么不进入循环?
  • 只是一个想法,但掷 1 个骰子 15 次会产生与掷 3 个骰子 5 次相同的结果。这样你就只需要使用一个函数来掷骰子,然后根据你需要多少结果来调用它
  • BTW - 存储一些值(字段)时需要一个类。在您的情况下,class Die 不会这样做。

标签: c#


【解决方案1】:

首先,您应该创建一个集合来保存您的骰子,而不是为每个骰子保留单独的变量。 (在这种情况下,数组可以正常工作。)

其次,我能给出的最佳建议是将问题分解成小块,由单个函数表示。例如,您应该有一个函数来帮助您确定是否掷出 3、4 或 5。这样,您的逻辑就可以像您的需求描述一样读取。

int[] dice = new int[5];
int numberOfTries = 0;
do 
{
    RollDice(dice);
    ...
    numberOfTries++;
}
while(numberOfTries < 3 && !DiceHaveOfAKind(dice, 3))

一旦您像这样分解了问题,您就可以更轻松地直观地推断出每种方法的正确性以及整个逻辑流程。此外,如果您正在努力解决某个特定部分,如果您可以用一种定义明确的方法的预期输入和输出来表达它,而不是一般的“有一些在这个作业中我不知道该怎么做”的问题风格。

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2015-08-25
    • 2013-10-14
    • 2012-11-27
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多