遇到while循环问题

时间:2017-11-07 00:48:11

标签: c# asp.net .net methods while-loop

下面的代码有两种方法:BetAmount获取用户输入。 MultiplierBetAmount并基于图像为true / false返回乘数。例如,如果BetAmount为10且所有图片均为真,则Multiplier应返回30。

okButton_Click方法中,标签应继续显示结果,只要totalAmount> 0.如果所有图像均为假,我在文本框中输入10,则循环应从totalAmount中减去10,直到totalAmount = 0.最初,totalAmount = 100.将其视为老虎机,如果图像不是,则会赔钱真。

protected void okButton_Click(object sender, EventArgs e)
    {

        bool imageOne = true;
        bool imageTwo = false;
        bool imageThree = false;
        double totalAmount = 100;
        double winAmount = Multiplier(imageOne, imageTwo, imageThree);
        double result = 0;

        while (true)
        {
            if (winAmount > 0)
            {
                result = totalAmount + winAmount;
            }
            else
            {
                result = totalAmount - BetAmount();
            }

            resultLabel.Text = result.ToString();            
        }

    }
    protected double BetAmount()
    {
        double betValue = double.Parse(numTextBox.Text);
        return betValue;
    }
    protected double Multiplier(bool firstImage, bool secondImage, bool thirdImage)
    {
        double multiplier = BetAmount();

        if (firstImage == true) multiplier *= 1;
        if (secondImage == true) multiplier *= 1;
        if (thirdImage == true) multiplier *= 1;

        return multiplier;
    }

1 个答案:

答案 0 :(得分:-1)

正如许多评论者所观察到的那样,您似乎没有充分考虑到您想要做什么,以及您的业务规则"如果你愿意的话。这应该是第一个下来的事情。我将从这里开始:

  

我的目标是创建一个老虎机应用程序。我已经能够创建一个显示三个随机图像的卷轴。如果其中一个图像是Cherry,则totalAmount应增加下注金额。如果是两个樱桃,则将betAmount乘以2并添加到totalAmount中。如果图像显示没有樱桃,那么totalAmount应该减去下注金额。

有了这个,以及你的代码中的一些有根据的猜测,我得到了这个:

  1. 用户以100个积分开始。
  2. 用户下注特定金额"拉动杠杆。"
  3. 一个樱桃付甚至,两个樱桃支付双倍,三个支付三倍。没有樱桃输了。
  4. 一旦用户用完了积分,他就会被破坏。
  5. 现在,一些有根据的猜测是关于你如何尝试实施这些"业务规则,"即你的"功能规范":

    1. 剩余积分总额显示在标签中。
    2. 用户在文本框中输入投注金额。
    3. 用户点击"确定"按钮。
    4. 您的卷轴显示三个随机图像。
    5. 计算奖金,并在剩余的总余额中加/减。
    6. 剩余积分总额显示已更新。
    7. 如果用户用完了积分,游戏就结束了。
    8. 现在,您的代码存在一些问题:

      1. 每次你推动" Ok"按钮,用户获得新的100学分。您的totalAmount变量需要在事件处理程序之外并且可以访问它。
      2. 用于计算奖金的过程不属于while循环。 (更不用说无限循环了,就像你在这里一样。)你只想在每次用户点击Ok按钮时进行一次计算,所以你只需要在代码中执行一次。
      3. 正如许多人所提到的,将乘数乘以1无效,因此是多余的。
      4. 现在,处理乘数的最佳方法可能是从0开始,每次获得命中时加1。然后,返回BetAmount *乘数。像这样:

        int multiplier = 0;
        
        if (firstImage == true) multiplier++;
        if (secondImage == true) multiplier++;
        if (thirdImage == true) multiplier++;
        
        return multiplier * BetAmount();
        

        您还需要添加逻辑以防止用户投注比他更多的积分,并在他用完时结束游戏。

        还有更多,但这应该让你走上正轨。