【问题标题】:C# Blackjack GameC#二十一点游戏
【发布时间】:2023-03-21 16:55:01
【问题描述】:

我想让我的二十一点游戏在我按下按钮 Draw A Card (hit) 时给我一张新牌

    private void btnDraw_Click(object sender, EventArgs e)
    {
        Random rdn = new Random();
        int YourCardOne = rdn.Next(1, 10 + 1);

        this.lblYourCardOne.Text = Convert.ToString(YourCardOne);

这是我必须抽一张牌的代码,我希望它在我再次按下按钮时绘制另一张牌,但我不希望它改变第一张牌。

我试过这样做,但每当我按下抽牌时它都会改变两张牌,

private void btnDraw_Click(object sender, EventArgs e)
    {
        Random rdn = new Random();
        int YourCardOne = rdn.Next(1, 10 + 1);

        this.lblYourCardOne.Text = Convert.ToString(YourCardOne);

        Random rdn1 = new Random();
        int YourCardTwo = rdn.Next(1, 10 + 1);

        this.lblYourCardTwo.Text = Convert.ToString(YourCardTwo);

【问题讨论】:

  • 整个游戏只需要一个随机数。以这种方式使用 Rand 根本无法模拟一副纸牌。 BJ 不仅使用 2 张牌,还需要允许第 3、4、5 甚至第 6 张牌。目前,您的点击代码是针对前 2 张卡片,而不是针对 Hitting。该代码应该用于 Deal。

标签: c# blackjack


【解决方案1】:

也许你可以为你的手牌使用一个整数列表

你可以把你的手变成这样:

List<int> hand = new List<int>();

然后当点击按钮时添加到列表中:

private void btnDraw_Click(object sender, EventArgs e)
{
    Random rdn = new Random();
    hand.add(rdn.Next(1, 10 + 1));

【讨论】:

    【解决方案2】:

    您最好的办法是尝试模仿现实世界,而不是尝试将编程模式应用到您的游戏中。不要使用卡片列表并随机选择一张。你不会在二十一点游戏中这样做,你总是拿最上面的牌。这意味着您应该有一个 Shuffle() 方法来随机混合卡片,并使用一个方法来取出最上面的卡片。

    这是我刚学习编程时从一个 gard 游戏中获得的一些示例代码,它可以为您提供一个示例,说明我对 shuffle 的含义。在那之后,获得顶牌的行为就很简单了。

    int deckSize;
    
    public void Shuffle()
    {
        Random rand = new Random();
        //Swap every card with a random card in the deck
        for(int count = 0; count < deckSize; count++)
        {
            int index = rand.Next(deckSize);
            Card swapee = cards[index];
            cards[index] = cards[count];
            cards[count] = swapee;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 2020-05-18
      • 1970-01-01
      • 2014-10-22
      • 2022-11-12
      • 2012-10-16
      • 2015-06-02
      • 1970-01-01
      • 2012-07-27
      相关资源
      最近更新 更多