C# 掷骰子游戏掷骰子卡在圈内

C# 掷骰子游戏掷骰子卡在圈内,c#,C#,我正在尝试为一个掷骰子游戏制作一个程序,在这个游戏中,用户输入一个下注金额,如果掷出7或11个六面骰子,则掷出2个六面骰子。如果2、3或12次掷骰失败,如果其他数字被掷骰,则该数字显示为一个点数。它将继续掷骰子直到掷出7或点数,如果掷出7,则输,否则赢。出于某种原因,掷骰子时掷骰子不止一次,看他们是赢了还是输了。我不知道如何解决这个问题 任何帮助都会受到欢迎 static int RollDice() { int roll; Random rand

我正在尝试为一个掷骰子游戏制作一个程序,在这个游戏中,用户输入一个下注金额,如果掷出7或11个六面骰子,则掷出2个六面骰子。如果2、3或12次掷骰失败,如果其他数字被掷骰,则该数字显示为一个点数。它将继续掷骰子直到掷出7或点数,如果掷出7,则输,否则赢。出于某种原因,掷骰子时掷骰子不止一次,看他们是赢了还是输了。我不知道如何解决这个问题 任何帮助都会受到欢迎

 static int RollDice()
    {

        int roll;


        Random random = new Random();
        int die1 = 0;
        int die2 = 0;

        die1 = random.Next(1,6);

        die2 = random.Next(1,6);

        roll = die1 + die2;
        Console.WriteLine($"You rolled {die1} + {die2} = {roll}");
        return roll;

    }

    static void processCraps()
    {

        string gameStatus;
        double betAmount;
        double netWinning = 0;
        int point;


            do
            { 
                Console.WriteLine("Enter the amount to bet");
                betAmount = double.Parse(Console.ReadLine());



                if (RollDice() == 2 || RollDice() == 3 || RollDice() == 12)
                {
                    Console.WriteLine($"You lost {betAmount}");
                    netWinning = netWinning - betAmount;

                }
                else if (RollDice() == 7 || RollDice() == 11)
                {
                    Console.WriteLine($"You won {betAmount}");
                    netWinning = netWinning + betAmount;
                }
                else if (RollDice() != 2 || RollDice() != 3 || RollDice() != 12 || RollDice() != 7 || RollDice() != 11)
                {

                    point = RollDice();
                    Console.WriteLine($"Point is {point}");
                   for(int rollCount =0; rollCount <= point; RollDice() )
                {
                   if(RollDice() == 7)
                    {
                        Console.WriteLine($"You lost {betAmount}");
                        netWinning = netWinning - betAmount;
                    }
                   else if(RollDice() == point)
                    {
                        Console.WriteLine($"You won {betAmount}");
                        netWinning = netWinning + betAmount;
                    }

                }

                }

                Console.WriteLine("Do you want to play again (y/n)");
                gameStatus = Console.ReadLine();



            } while (gameStatus == "y") ;
            Console.WriteLine($"Your net winning is {netWinning}");

        }
static int RollDice()
{
整流罩;
随机=新随机();
int die1=0;
int die2=0;
die1=随机。下一个(1,6);
die2=随机。下一个(1,6);
辊=die1+die2;
WriteLine($“您滚动了{die1}+{die2}={roll}”);
回程辊;
}
静态void processCraps()
{
字符串状态;
双倍数量;
双网络=0;
积分点;
做
{ 
Console.WriteLine(“输入下注金额”);
betAmount=double.Parse(Console.ReadLine());
如果(RollDice()==2 | | RollDice()==3 | | RollDice()==12)
{
WriteLine($“您丢失了{betAmount}”);
网络化=网络化-金额;
}
else if(RollDice()==7 | | RollDice()==11)
{
WriteLine($“你赢了{betAmount}”);
联网=联网+金额;
}
否则如果(RollDice()!=2 | | RollDice()!=3 | | RollDice()!=12 | | RollDice()!=7 | | RollDice()!=11)
{
点=滚动骰子();
WriteLine($“点为{Point}”);

对于(int rollCount=0;rollCount而言,问题在于您的
if
语句

if (RollDice() == 2 || RollDice() == 3 || RollDice() == 12)
这些
RollDice()
中的每一个都是对该函数的调用。如果只想滚动一次,请调用该函数一次,并将结果赋给一个变量并进行检查,从而:

int roll = RollDice();
if (roll == 2 || roll == 3 || roll == 12)

问题在于您的
if
语句

if (RollDice() == 2 || RollDice() == 3 || RollDice() == 12)
这些
RollDice()
中的每一个都是对该函数的调用。如果只想滚动一次,请调用该函数一次,并将结果赋给一个变量并进行检查,从而:

int roll = RollDice();
if (roll == 2 || roll == 3 || roll == 12)

您调用RollDice的次数太多。请在他们输入下注金额并将结果存储在变量中后再调用它一次。然后使用该变量检查已滚动的值,例如

static void processCraps()
{
    string gameStatus;
    double betAmount;
    double netWinning = 0;
    int point;


    do
    { 
        Console.WriteLine("Enter the amount to bet");
        betAmount = double.Parse(Console.ReadLine());


        var diceRoll = RollDice();
        if (diceRoll == 2 || diceRoll == 3 || diceRoll == 12)
        {
            Console.WriteLine($"You lost {betAmount}");
            netWinning = netWinning - betAmount;
        }
        ... // repeat for the other rolls
    }

}

您调用RollDice的次数太多。请在他们输入下注金额并将结果存储在变量中后再调用它一次。然后使用该变量检查已滚动的值,例如

static void processCraps()
{
    string gameStatus;
    double betAmount;
    double netWinning = 0;
    int point;


    do
    { 
        Console.WriteLine("Enter the amount to bet");
        betAmount = double.Parse(Console.ReadLine());


        var diceRoll = RollDice();
        if (diceRoll == 2 || diceRoll == 3 || diceRoll == 12)
        {
            Console.WriteLine($"You lost {betAmount}");
            netWinning = netWinning - betAmount;
        }
        ... // repeat for the other rolls
    }

}

您调用
RollDice
的次数太多。在他们输入下注金额并将结果存储在变量中后调用一次。然后使用该变量检查已滚动的值-请参阅下面的答案您调用
RollDice
的次数太多。在他们输入下注金额并将结果存储在变量中后调用一次。然后使用该变量检查滚动的值-参见下面的答案