visual studio 2010 - c#骰子游戏,Sum只返回最后2个骰子的和,而不是整个游戏

本文关键字:游戏 2个 2010 studio Sum 返回 visual 最后 | 更新日期: 2023-09-27 17:54:09

我正在创建一个有2个骰子的骰子游戏,我已经让它工作了,但唯一的问题是我不能从所有的滚动(整个游戏)中获得总和,我只得到最后2个滚动的总和,如果我使用Sum方法,我如何找到所有滚动的总和?下面是我的代码:

        Console.BufferHeight = 500;
        Random x = new Random();
        int throw_times = 1;
        int[] dice = new int[2];
        dice[0] = x.Next(1, 7);
        dice[1] = x.Next(1, 7);
        for (int i = 1; i <= 100; i++)
        {
            dice[0] = x.Next(1, 7);
            dice[1] = x.Next(1, 7);
            int total_var = dice[0] + dice[1];
            int[] total_array = {dice[0] + dice[1]};//total in array
            Console.Write("Throw " + throw_times + ": " + dice[0] + " and " + dice[1] + " = ");
            Console.WriteLine(total_var);
            throw_times++;
            Array.Sort(dice);
            for (int a = dice.Length - 1; a >= 0; a--)
            {
                int s = dice[a];
                Console.WriteLine("#" + s);
            }
        }
        Console.WriteLine("Total sum: " + dice.Sum());//only returns sum of last 2 rolls
        Console.WriteLine("Average: " + dice.Average());//only return average of last 2 rolls

如果有人知道我怎样才能得到总卷数,请回答,非常感谢。

visual studio 2010 - c#骰子游戏,Sum只返回最后2个骰子的和,而不是整个游戏

SumAverage扩展方法将计算当前数组中内容的总和和平均值,并且由于每次尝试都要重新设置数组,因此它将只包含最后两项。

要获得所有掷骰子的总和或平均值,您要么必须扩展您的数组,以便它记录整个程序中所进行的所有掷骰子,要么只保留一个运行总数(这看起来简单得多):

int[] dice = new int[2];
int sum = 0;
for (int i = 1; i <= 100; i++)
{
    dice[0] = x.Next(1, 7);
    dice[1] = x.Next(1, 7);
    sum += dice[0] + dice[1];
    ...
}
Console.WriteLine("Total sum: " + sum);

如果你还想要所有骰子滚动的平均值,或者只是最后两个,那么从你的问题中就不完全清楚了,但是因为你知道总和和总数(因为这在你的应用中是硬编码的),你可以很容易地计算出所有骰子滚动的平均值:

Console.WriteLine("Total sum: " + (sum / 200)); // 200 because you roll 2 dice in 100 trials