我正在尝试自己学习C#。我想制作一个骰子游戏,让用户输入他或她想要的任意数量的骰子。因此,如果用户输入10个骰子,则骰子卷的10个列表将彼此相邻。这是我无法弄清楚的地方。如何让用户输入他或她想要的任意数量的骰子?使用数组或列表是不切实际的,因为我必须给每个部分10次或更多次。举一个简单的例子会很好。
static void Main(string[] args)
{
Random numbergen = new Random();
int dice1=0;
int dice2=1;
for (int counter = 0; counter <= 1; counter++)
{
while (dice1 != dice2)
{
dice1 = numbergen.Next(1, 7);
dice2 = numbergen.Next(1, 7);
if (dice1 == dice2)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(dice1 + "\t" + dice2);
counter++;
dice1 = 0;
dice2 = 1;
}
else if (dice1 != dice2)
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(dice1 + "\t" + dice2);
}
if (counter ==1 )
{
break;
}
}
}
Console.ReadLine();
}
答案 0 :(得分:0)
最有可能的是,你需要List<>,如下所示:
int size = 10; // Or user input
List<int> dice = new List<int>(size);
采用Int32
参数的constructor形式预先分配列表中的许多项目。
然后,而不是dice1 = numbergen.Next(1, 7);
,您有dice[0] = ...
。
你显然需要一个循环来生成值并决定你想要如何解释它们中两个相等的条件(可能也需要某种循环) ,但如果我正确地理解了这个问题,那么这应该会让你前进。
(你可以用数组做类似的事情,但是从其他方面来看,列表很方便,你可以从第一个链接看到。)
或者,您可以分配一个空列表,然后使用更多类似的内容填充您的项目,而不是单独预先分配和填充它们。
int size = 10;
for (int i = 0; i < size; i++) {
dice.Add(numbergen.Next(1, 7));
}
这可能是大多数人的首选,但这种工作的差异应该是微不足道的。
(当您正在进行此操作时,请将for
循环更改为while
并将counter
更改为bool
,并使用更有用的名称。 。)