一种在记忆游戏中识别和匹配卡片的方法

时间:2016-03-29 23:28:19

标签: c#

所以我试图制作一个记忆匹配游戏,其中翻转两张牌,然后检查它们是否匹配。如果它们匹配,则它们保持翻转,否则翻转。但是我一直想找到一种方法来识别与之匹配的卡片。

class Card
{
    List<int> IDs = new List<int>();
    List<PictureBox> pictureBoxes = new List<PictureBox>;

    public void addPictureBox(PictureBox pb)
    {
        pictureBoxes.Add(pb);
    }


    public void addInt(int numberOfCards)
    {
        for(int i = 1; i <= numberOfCards; i++)
        {
            IDs.Add(i);
        }
    }

}

到目前为止,我制作了这个卡类来将每个图片框存储在一个列表中,并且还创建了一个整数列表来识别它们。将两者连接在一起的方法是什么?

2 个答案:

答案 0 :(得分:1)

好好创建一个具有picturebox和int的类。并列出这个类:

<some.package.CircleImageView

    ...
    android:scaleType="fitXY"
    ...


    />

现在,您可以访问每张卡片:public class Card{ public Picturebox pic; public int Id; } List<Card> Cards= new List<Card>(); public void addInt(int numberOfCards) { for(int i = 1; i <= numberOfCards; i++) { Cards.Add(new Card(){ pictureBoxes= pb, id = i }); } } card.Id

答案 1 :(得分:1)

首先,您需要使用SOCSRP原则更好地设计Card类以有效地表示卡片(即卡片不应具有{ {1}},而应该有PictureBox属性来表示它的面孔。

Image类应该是这样的:

Card

然后应该有一个名为public class Card { public int ID { get; set; } public Image Face { get; set; } } 且带有Board的类,在初始化时使用所有卡填充此属性。为简单起见,您可以使用填充了所有ID作为键的List<Card>和相应匹配作为值来匹配卡片,因此您可以调用词典Dicionaty<int, int>来检查一些id是另一个id的匹配:

TryGetValue

要在视觉上表示卡片,您可以在表单类中创建另一个字典,其中键是卡片的ID,而PictureBoxs的值是这样的,这样就可以很容易地使用创建的类来进行游戏。

当然有更高级的方法可以做到这一点,但我试着回答一个简单的方法。