2014-02-18 161 views
0

我正在製作一張cardgame,並在我的資源(所有卡)中有52個位圖。因爲它在處理2張卡片時現在能夠正常工作:將位圖資源添加到列表

public void GiveTwoRandomCardsFromCardsList() 
    { 

     Random random = new Random(); 
     System.Threading.Thread.Sleep(100); 
     int slumptal = random.Next(0, 52); 
     card1 = Cards[slumptal]; 

     bool flag = false; 

     while (!flag) 
     { 
      System.Threading.Thread.Sleep(100); 
     int slumptal2 = random.Next(0, 52); 

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

     } 

    } 

它的作用是從字符串列表中給出2個字符串的值。該列表包含52串H2,H3,H4,H5等。現在,如果我想顯示某個卡,我有這些長開關的圖像:

switch (whatIsTheFirstCard) 
     { 

       //Hearts 
      case "h2": 
       Card1Picture.Image = Resource1.h2; 
       break; 
      case "h3": 
       Card1Picture.Image = Resource1.h3; 
       break; 
      case "h4": 
       Card1Picture.Image = Resource1.h4; 
       break; 

等等等等所有的牌。有沒有辦法直接將圖像添加到列表中,然後只需調用該列表?現在的方式要求我複製並粘貼我希望顯示的每張卡片的開關。不用說,我寧願有一個可以保留所有位圖卡的列表。

private void FlopButton_Click(object sender, EventArgs e) 
    { 
     theCards.DealTheFlop(); 
     FlopCard1.Image = thebitmapgoeshere; 

    } 

我不知道添加位圖到列表的語法,然後從列表中調用它們。

回答

1

myCards.Add("h2", "myfolder/h2.bmp"); 

最後,您可以使用使用它們

如果您在代碼中使用與資源中完全相同的標識符,則可以直接通過資源管理器獲取適當的資源,例如

FlopCard1.Image = (Bitmap)Resources.ResourceManager.GetObject("h4", Resources.Culture); 

在內部,這也正是生成的代碼所做的。

這樣,你不需要一個單獨的列表,你甚至可以很容易地爲不同的文化指定不同的卡組。

+0

太好了!這使事情變得更容易。每天學點新東西,呃?謝謝! – darrrrUC

1

我會使用一個詞典。您可以使用

Dictionary<string, Bitmap> myCards = new Dictionary<string, Bitmap>(); 

接下來,你可以遍歷該文件夾的內容或東西,只是去一個詞典(例如):

myControl.Image = myCards["h2"]; 
1

使用本:

Card1Picture.Image = (Image)Resource1.ResourceManager.GetObject("h1"); 

編輯: 對不起,我沒看到喬治的回答是:/