2014-02-18 104 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"); 

编辑: 对不起,我没看到乔治的回答是:/