C#二十一点游戏

时间:2015-11-03 23:14:35

标签: c# blackjack

当我按下我的按钮Draw A Card(点击)时,我想让我的二十一点游戏给我一张新卡

    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);

2 个答案:

答案 0 :(得分:0)

也许您可以使用手牌的整体列表

你可以这样做:

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));

答案 1 :(得分:0)

最好的办法是尝试模仿现实世界,而不是尝试将编程模式应用到游戏中。不要使用卡片列表并随机选择一张卡片。你不能在二十一点游戏中这样做,你总是拿顶级卡。这意味着你应该有一个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;
    }
}