2015-11-03 77 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; 
    } 
}