2014-02-17 125 views
0

我只是鬼混在Windows窗體和想點擊一個按鈕,然後給玩家2張隨機卡,但是當我點擊按鈕的標籤是空的。我如何將值傳遞給字符串?得到一個隨機卡,並更改標籤

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void DealTheCardsButton_Click(object sender, EventArgs e) 
    { 
     TheCards theCards = new TheCards(); 
     CardOneLabel.Text = theCards.card1; 
    } 
} 

public class TheCards 
{ 
    public TheCards() 
    { 
     Cards = new List<string>(); 
     Cards.Add("1"); 
     Cards.Add("2"); 
     Cards.Add("3"); 
     Cards.Add("4"); 
    } 

    public List<string> Cards { get; set; } 

    public string card1; 
    public string card2; 

    public string cardTest = "hej"; 

    public void GiveTwoRandomCardsFromCardsList() 
    { 
     Random random = new Random(); 
     int slumptal = random.Next(0, 4); 
     card1 = Cards[1]; 

     bool flag = false; 
     while (!flag) 
     { 
      Random random2 = new Random(); 
      int slumptal2 = random2.Next(0, 4); 

      if (slumptal != slumptal2) 
      { 
       card2 = Cards[slumptal2]; 
       flag = true; 
      } 
     } 
    } 
} 

如果我打電話到CardOneLabel.Text與它它工作的硬編碼值更改爲字符串。看起來隨機化並沒有改變string card1string card2的值。就像現在一樣,當我點擊按鈕時,標籤將其值更改爲空(空)。

我怎樣才能改變標籤值隨機卡價值?

回答

1

你永遠不調用GiveTwoRandomCardsFromCardsList方法。試試這個:

private void DealTheCardsButton_Click(object sender, EventArgs e) 
{ 
    TheCards theCards = new TheCards(); 
    theCards.GiveTwoRandomCardsFromCardsList(); 

    CardOneLabel.Text = theCards.card1; 
} 

順便說一句,不適合你要求每一個隨機數,創建一個新的Random對象。由於僞隨機數發生器如何依賴於當前時間,這甚至會給你相同的隨機數。一遍又一遍地使用相同的Random實例。它會每次給你一個新的隨機數。

此外,你有時會得到相同的卡兩次。我會把它留給OP來弄清楚如何總是得到兩張不同的卡片,如果這是想法。

+0

這就是到目前爲止的代碼,一定是錯過了一些作品的魅力!非常感謝我的隨機pov。將它減少到一個隨機。因爲它現在工作,我不能得到相同的兩張卡,但我明白你在減少到1隨機:) – darrrrUC

1

但是,當我點擊按鈕的標籤是空的。我如何將 值傳遞給字符串?

當您嘗試賦值

CardOneLabel.Text = theCards.card1; 

該類TheCards沒有啓動card1變量什麼的構造,您檢索一個空字符串。

下面的構造函數中,添加到列表中Cards但沒有別的正在發生..你有額外的代碼你沒有顯示?

public TheCards() 
{ 
    Cards = new List<string>(); 
    Cards.Add("1"); 
    Cards.Add("2"); 
    Cards.Add("3"); 
    Cards.Add("4"); 
} 

當您按下按鈕時,您的CardOneLabel爲空,因爲您確實是在讀空字符串。在分配之前嘗試撥打GiveTwoRandomCardsFromCardsList()方法。

+0

HMM沒有笑的非常重要的:) – darrrrUC