Как привязать к переменной типа Image какое то число (Реализация на Windows Forms)

Пишу игру "21" на си шарпе, у меня есть папка с картинками (каждая картинка изображает какую-то карту из колоды). Возник вопрос: как привязать к картинке нужное число? Например: при запуске игры генерируется 2 изображения (например, 8 хреста и 4 бубна). Соответственно, в переменную score (счет) должны присваиваться числа 8 и 4, но с помощью чего это реализовать?

     public void GenerateCards(GameForm gameForm) // Генерирует по 2 случайные карты игроку и дилеру
     {
        List<Image> list = new List<Image>();

        DirectoryInfo dir = new DirectoryInfo(@"путь к папке"); // Перебирает файлы с .png и кидает их в список
        foreach (FileInfo file in dir.EnumerateFiles("*.png"))
        {
            list.Add(Image.FromFile(file.FullName));
        }

        img = list[rand.Next(0, list.Count)];
        gameForm.card1_dealer.Image = new Bitmap(img);
        list.Remove(img);

        img = list[rand.Next(0, list.Count)];
        gameForm.card2_dealer.Image = new Bitmap(img);
        list.Remove(img);

        img = list[rand.Next(0, list.Count)];
        gameForm.card1_player.Image = new Bitmap(img);
        list.Remove(img);

        img = list[rand.Next(0, list.Count)];
        gameForm.card2_player.Image = new Bitmap(img);
        list.Remove(img);
    }

Ответы (1 шт):

Автор решения: YD359
  1. Простой, но плохой вариант Хранить все в Dictionary<Bitmap,int>, то есть для каждого Bitmap будет некое целочисленное значение. Это чуть ли не самый прямой ответ на ваш вопрос.

  2. Вариант правильный Создайте класс для карт, где будет указано значение и изображение для каждой карты:

    public class Card { 
        public Bitmap CardImage {set; get;} 
        public int Value {set; get}    
    
        public Card(Bitmap bmp, int val) {
           this.CardImage = bmp;
           this.Value = val;
        }
    }
    

Это все при условии, что вам не нужны масти и вообще ничего кроме картинки и значения. Теперь если у вас есть две карты вы просто можете добавить сумму их значений в score:

score = card1.Value + card2.Value;

P.S. у меня верстка сломалась

→ Ссылка