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
如果有人知道我怎样才能得到总卷数,请回答,非常感谢。
Sum
和Average
扩展方法将计算当前数组中内容的总和和平均值,并且由于每次尝试都要重新设置数组,因此它将只包含最后两项。
要获得所有掷骰子的总和或平均值,您要么必须扩展您的数组,以便它记录整个程序中所进行的所有掷骰子,要么只保留一个运行总数(这看起来简单得多):
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