Как привязать к переменной типа 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 шт):
Простой, но плохой вариант Хранить все в
Dictionary<Bitmap,int>, то есть для каждого Bitmap будет некое целочисленное значение. Это чуть ли не самый прямой ответ на ваш вопрос.Вариант правильный Создайте класс для карт, где будет указано значение и изображение для каждой карты:
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. у меня верстка сломалась