Валерий Алексеевич Жарков

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 3: Программирование на Visual C# искусственного интеллекта (продолжение 2)


Скачать книгу

каждую последовательность из 13 карт в четырёх мастях (последовательно сверху вниз: трефы – club, бубны – diamond, черви – heart, пики – spade). Файл с именем «0» – фон игры. Эти изображения должны быть добавлены к проекту и использованы для вывода карт на экран. Каждое изображение карты имеет приблизительно только 1 Кбайт объёма, потому что содержит только четыре цвета, чтобы не использовать много памяти.

      Рис. 1.1. Карты и другие рисунки игры в уменьшенном масштабе.

      Рис. 1.2. Первые семь карт в увеличенном масштабе.

      Рис. 1.3. Последующие шестнадцать карт в увеличенном масштабе.

      На этом рисунке закончились 13 карт 1, 2, 3, …,13 первой масти трефы – club. Первая карта любой масти – Туз (Ace – A).

      Рис. 1.4. Последующие шестнадцать карт в увеличенном масштабе.

      На этом рисунке закончились 13 карт 14, 15, 16, …, 26 второй масти бубны – diamond и 13 карт 27, 28, 29, …, 39 третьей масти черви – heart. И здесь первая карта масти – Туз (Ace – A).

      Ниже показаны 13 карт 40, 41, 42, …, 52 последней четвертой масти пики – spade.

      Рис. 1.5. Последние тринадцать карт в увеличенном масштабе.

      Значения очков каждой карты следующие: Туз (Ace – A) = 1 или 11; как 1-я, 2-я или 3-я карта – Туз даёт 11 очков; с Валетом, Дамой и Королём, Туз даёт 11 очков и в сумме 10+11=21 эти две карты называются PocketJack, который бьёт карты соперника, даже набравшие 21; как 4-я и последующая карта – Туз даёт 1 очко; цифры на картах от 2 до 9 означают очки этой карты;

      карта с числом 10 card with number 10, Валет (Jack – J), Дама (Queen – Q), Король (King – K) = по 10 очков.

      1.3. Загрузка в проект изображений карт

      Чтобы добавить имеющиеся у нас файлы карт в проект, необходимо сначала добавить в проект папку для этих файлов, затем скопировать в эту папку файлы, а затем свойства этих файлов задать как Embedded Resource, как подробно будет описано далее при создании проекта игры.

      Лучший способ загрузить файлы карт в программу при её выполнении – создать массив этих карт в классе Image или Bitmap. После этого изображения могут тогда быть нарисованы на поле игры playfield, когда потребуется. Чтобы загрузить изображения карт в массив, возможны два варианта кода. По первому варианту, код имеет следующий вид:

      static private Image [] cardImages = new Bitmap [53];

      System.Reflection.Assembly execAssem =

      System.Reflection.Assembly.GetExecutingAssembly ();

      for (int i=0; i <53; i++)

      {

      cardImages [i] =

      new Bitmap(execAssem.GetManifestResourceStream (

      @"PocketJack.cardImages."+i+@".gif»));

      }

      Видно, что в этом варианте проект имеет имя PocketJack, папка с файлами карт имеет имя cardImages, а в массиве cardImages все файлы карт с именами «i» должны иметь расширение (.gif).

      По второму варианту, который мы применим далее в программе, код имеет следующий вид:

      public Image CardImage

      {

      get

      {

      int dispNo = CardNo;

      if (!FaceUp)

      {

      dispNo = 0;

      }

      if