2015-11-03 65 views
0

我想让我的二十一点游戏给我一个新卡时,我按下按钮,绘制一个卡(命中)C#的二十一点游戏

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

你只需要一个随机的整个游戏。以这种方式使用兰德根本不会效仿一副牌。 BJ使用不止2张牌,你需要允许第3张,第4张,第5张甚至第6张牌。目前您的点击代码是针对前2张卡片的,不适用于点击。该代码应该用于Deal。 – Plutonix

回答

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

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