基本C#骰子游戏
我对c#和一般的编码都是新手。为了提高我的技能,我尝试创建一个基本游戏,两名玩家掷骰子并记录他们的得分。该球员以20分获胜。每个玩家轮流掷骰子,将第一个骰子加到第二个骰子上,以此类推,直到其中一个达到20。如果掷6,玩家可以再次掷骰子 我目前的代码是:基本C#骰子游戏,c#,dice,C#,Dice,我对c#和一般的编码都是新手。为了提高我的技能,我尝试创建一个基本游戏,两名玩家掷骰子并记录他们的得分。该球员以20分获胜。每个玩家轮流掷骰子,将第一个骰子加到第二个骰子上,以此类推,直到其中一个达到20。如果掷6,玩家可以再次掷骰子 我目前的代码是: do { 控制台。写入(“输入播放器1的名称:”); Player[0]=Console.ReadLine(); 控制台。写入(“输入播放器2的名称:”); Player[1]=Console.ReadLine(); 随机骰子随机=新随机();
do
{
控制台。写入(“输入播放器1的名称:”);
Player[0]=Console.ReadLine();
控制台。写入(“输入播放器2的名称:”);
Player[1]=Console.ReadLine();
随机骰子随机=新随机();
掷骰子[0]=DiceRandom.Next(1,7);
int i=0;
而(i您的问题是您正在使用以下行重置以前的分数:
PlayerTotal[0] = DiceThrow[0];
PlayerTotal[1] = DiceThrow[1];
您应该将其更改为使用+=
,如下所示:
PlayerTotal[0] += DiceThrow[0];
PlayerTotal[1] += DiceThrow[1];
这就像说:PlayerTotal[0]=PlayerTotal[0]+DiceThrow[0];
除此之外,代码中还有一些问题
例如,在代码开头有一个Do
,但在s时有两个。。。
您可能希望创建一个带有AND语句的While
例如:
//获取用户名
do
{
// All your Dice throwing logic
}
while (PlayerTotal[0] != 20 && PlayerTotal[1] != 20);
您的代码有许多问题:
你在循环中询问玩家的名字
您正在初始化循环内的随机生成器(这可能会在不同的循环上导致相同的结果,因为随机生成器可以使用相同的种子)
您正在使用=而不是+=
停止条件是totals==20,而不是total<20
您使用的是两个while语句,而不是AND(&&&)条件
这只是一个简单的概述
这可以是一个解决方案:
Console.Write("Enter the name of Player 1: ");
Player[0] = Console.ReadLine();
Console.Write("Enter the name of Player 2: ");
Player[1] = Console.ReadLine();
Random DiceRandom = new Random();
do
{
int i = 0;
while (i <= 1)
{
int thisThrow = DiceRandom.Next(1, 6);
DiceThrow[0 + i] += thisThrow;
Console.ReadLine();
Console.Write(Player[0 + i] + " rolled a " + thisThrow);
if (thisThrow != 6) i++;
}
Console.ReadLine();
PlayerTotal[0] += DiceThrow[0];
PlayerTotal[1] += DiceThrow[1];
Console.ReadLine();
Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
Console.ReadLine();
Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
Console.ReadLine();
}
while (PlayerTotal[0] < 20 && PlayerTotal[1] < 20);
Console.Write(“输入播放器1的名称:”);
Player[0]=Console.ReadLine();
控制台。写入(“输入播放器2的名称:”);
Player[1]=Console.ReadLine();
随机骰子随机=新随机();
做
{
int i=0;
而(iinti=0;
虽然(感谢您的回复和关注点,但编码对我来说是全新的,所以我没有意识到这些关注点。您提供的解决方案几乎是完美的。除非玩家先掷6,然后掷2,否则它会将数字2保存为玩家的总数,而不是8。是的,我已更正代码:DiceThrow[0+i]应该递增(使用+=)而不是覆盖(使用=)它会将数字相加,但玩家可以滚动大于6的数字,这是不允许的。你知道我如何解决这个问题吗?这是因为你正在使用Next(1,7),这将返回1到7的数字,我想你应该使用Next(1,6)以停止在6。Next(minValue,MaxValue)包括边界我得到的结果是:玩家1掷12,玩家2掷8
Console.Write("Enter the name of Player 1: ");
Player[0] = Console.ReadLine();
Console.Write("Enter the name of Player 2: ");
Player[1] = Console.ReadLine();
Random DiceRandom = new Random();
do
{
int i = 0;
while (i <= 1)
{
int thisThrow = DiceRandom.Next(1, 6);
DiceThrow[0 + i] += thisThrow;
Console.ReadLine();
Console.Write(Player[0 + i] + " rolled a " + thisThrow);
if (thisThrow != 6) i++;
}
Console.ReadLine();
PlayerTotal[0] += DiceThrow[0];
PlayerTotal[1] += DiceThrow[1];
Console.ReadLine();
Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
Console.ReadLine();
Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
Console.ReadLine();
}
while (PlayerTotal[0] < 20 && PlayerTotal[1] < 20);
int i = 0;
while (i <= 1)
{
int thisThrow = DiceRandom.Next(1, 6);
DiceThrow[0 + i] += thisThrow;
Console.ReadLine();
Console.Write(Player[0 + i] + " rolled a " + thisThrow);
if (thisThrow != 6) i++;
}
Console.ReadLine();
PlayerTotal[0] += DiceThrow[0];
PlayerTotal[1] += DiceThrow[1];
Console.ReadLine();
Console.Write(Player[0] + " currently has " + PlayerTotal[0]);
Console.ReadLine();
Console.Write(Player[1] + " currently has " + PlayerTotal[1]);
Console.ReadLine();