为什么我的随机发生器在我 运行 程序时显示相同的数字?
Why does my randomizer show the same number when I run the program?
我是 C# 的新手,正在尝试制作一个骰子游戏。我制作了一个 do
-while
循环,并且有效。我的问题是我用数字制作了一个随机发生器,但是一旦我掷出骰子,它就会显示 5。它一直显示 5,而不是新数字。有点毁了游戏。
这是我的代码:
Ps。我是丹麦人,这就是为什么您可能不理解某些词的原因。希望能帮到你。
static void Main(string[] args) {
int liv; ; // det er monsterets liv
Random rnd = new Random();
int dice = rnd.Next(1, 6); /*den vælger et random tal mellem 1 til 6*/
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("velkommen til monster terning spil. du vinder spillet ved at dræbe monsteret");
Console.WriteLine("indtast hvor mange liv monsteret skal have ");
liv = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("du har givet monsteret {0} liv", liv);
Console.Write("tryk på en knap for at komme videre");
Console.ReadKey();//når du trykker på en knap kommer du videre
Console.Clear();
Console.WriteLine("slå med terningen tryk på en knap for");
Console.ReadKey();
do {
if ((dice == 3) || (dice == 2)) { //hvis der bliver slået 3 eller 2 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("du slog {0} monsteret slog tilbage", dice);
Console.WriteLine("tryk på en knap for at slå med terningen igen");
Console.ReadKey();
}
if (dice == 1) { //hvis der bliver slået 1 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("du slog {0} monsteret giver dobbelt skade.", dice);
Console.WriteLine("tryk på en tast for at slå med terningen igen");
Console.ReadKey();
}
if ((dice == 4) || (dice == 5)) { //hvis der bliver slået 4 eller 5 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du slog {0} monsteret har taget 1 skade.", dice);
Console.WriteLine("monsterets liv er nu {0}", --liv);
Console.WriteLine("tryk på en tast for at slå med terningen igen");
Console.ReadKey();
}
if (dice == 6) { //hvis der bliver slået 6 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du slog {0} dobbelt skade er givet. monsterets liv er nu {1}", dice, liv = -2);
Console.WriteLine("tryk på en tast for at slå med terningen");
Console.ReadKey();
}
}
while (liv > 0); //jeg vil have spillet til at kører så længe liv er større end 0
if (liv == 0) {
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du vandt! monsteret er dræbt!!");
}
正如@Charlieface 在他的评论中所写,您只在程序的开头设置 dice
。
您的问题的解决方案是使用 Random
对象重新设置它:
do {
dice = rnd.Next(1, 6);
if ((dice == 3) || (dice == 2)) {
....
}
while (liv > 0);
我是 C# 的新手,正在尝试制作一个骰子游戏。我制作了一个 do
-while
循环,并且有效。我的问题是我用数字制作了一个随机发生器,但是一旦我掷出骰子,它就会显示 5。它一直显示 5,而不是新数字。有点毁了游戏。
这是我的代码:
Ps。我是丹麦人,这就是为什么您可能不理解某些词的原因。希望能帮到你。
static void Main(string[] args) {
int liv; ; // det er monsterets liv
Random rnd = new Random();
int dice = rnd.Next(1, 6); /*den vælger et random tal mellem 1 til 6*/
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("velkommen til monster terning spil. du vinder spillet ved at dræbe monsteret");
Console.WriteLine("indtast hvor mange liv monsteret skal have ");
liv = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("du har givet monsteret {0} liv", liv);
Console.Write("tryk på en knap for at komme videre");
Console.ReadKey();//når du trykker på en knap kommer du videre
Console.Clear();
Console.WriteLine("slå med terningen tryk på en knap for");
Console.ReadKey();
do {
if ((dice == 3) || (dice == 2)) { //hvis der bliver slået 3 eller 2 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("du slog {0} monsteret slog tilbage", dice);
Console.WriteLine("tryk på en knap for at slå med terningen igen");
Console.ReadKey();
}
if (dice == 1) { //hvis der bliver slået 1 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("du slog {0} monsteret giver dobbelt skade.", dice);
Console.WriteLine("tryk på en tast for at slå med terningen igen");
Console.ReadKey();
}
if ((dice == 4) || (dice == 5)) { //hvis der bliver slået 4 eller 5 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du slog {0} monsteret har taget 1 skade.", dice);
Console.WriteLine("monsterets liv er nu {0}", --liv);
Console.WriteLine("tryk på en tast for at slå med terningen igen");
Console.ReadKey();
}
if (dice == 6) { //hvis der bliver slået 6 skal den gøre følgende
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du slog {0} dobbelt skade er givet. monsterets liv er nu {1}", dice, liv = -2);
Console.WriteLine("tryk på en tast for at slå med terningen");
Console.ReadKey();
}
}
while (liv > 0); //jeg vil have spillet til at kører så længe liv er større end 0
if (liv == 0) {
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("du vandt! monsteret er dræbt!!");
}
正如@Charlieface 在他的评论中所写,您只在程序的开头设置 dice
。
您的问题的解决方案是使用 Random
对象重新设置它:
do {
dice = rnd.Next(1, 6);
if ((dice == 3) || (dice == 2)) {
....
}
while (liv > 0);