Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 8: Программирование на Visual C# искусственного интеллекта. Издание 2. Продолжение 1. Валерий Алексеевич Жарков

Чтение книги онлайн.

Читать онлайн книгу Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 8: Программирование на Visual C# искусственного интеллекта. Издание 2. Продолжение 1 - Валерий Алексеевич Жарков страница 4

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 8: Программирование на Visual C# искусственного интеллекта. Издание 2. Продолжение 1 - Валерий Алексеевич Жарков

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

Color.Green);

      execAssem =

      System.Reflection.Assembly.GetExecutingAssembly();

      }

      В этом коде метод SetColorKey даёт начало и конец диапазона цветов, которые будут расценены как прозрачный. Для среды выполнения .NET Compact Framework эти два цвета должны иметь одно и то же значение, так как только один цвет может быть сделан прозрачным.

      Целесообразно также после создания проекта в программе задать фон формы Form1 в свойстве BackColor темно-зелёного цвета (DarkGreen) из структуры Color.

      Когда изображение карты нарисовало, метод DrawImage используется следующим образом:

      private static Rectangle drawRect;

      public void DrawHand(Graphics g, int startx, int starty,

      int gapx, int gapy)

      {

      drawRect.X = startx;

      drawRect.Y = starty;

      foreach (Card card in this)

      {

      drawRect.Width = card.CardImage.Width;

      drawRect.Height = card.CardImage.Height;

      g.DrawImage(

      card.CardImage,                  // Image

      drawRect,                  // destination rectange

      0,                                    // srcX

      0,                                    // srcY

      card.CardImage.Width, // srcWidth

      card.CardImage.Height,      // srcHeight

      GraphicsUnit.Pixel,            // srcUnit

      Card.cardAttributes); // ImageAttributes

      drawRect.X += gapx;

      drawRect.Y += gapy;

      }

      }

      Этот код рисует все карты на экране в случайно определённой позиции (при помощи генератора случайных чисел класса Random).

      1.5. Класс Card для загрузки

      карт в программу

      В движке игры CardEngine.cs объект класса Card представляет каждую из карт в игре. Этот класс держит фактическое значение карты и рисует её на экране. Он также обеспечивает свойства, которые дают возможность пользователям класса найти координаты карты, получить название карты и другую полезную информацию. Класс Card может использоваться во многих других карточных играх, но есть некоторые особенности, которые характерны для игры в очко.

      Первая версия класса Card выполняла загрузку всех изображений, когда приложение начинало выполняться. Каждая из 52 карт и фон игры загружались в самом начале игры. Это делало приложение замедленным. Способ ускорить процесс загрузки состоит в том, чтобы загружать изображения только по запросу при использовании следующего кода:

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

      public Image CardImage

      {

      get

      {

      int dispNo = CardNo;

      if (!FaceUp)

      {

      dispNo = 0;

      }

      if (cardImages[dispNo] == null)

      {

      cardImages[dispNo] = new Bitmap(

      execAssem.GetManifestResourceStream(

      @"PocketJack.images." + dispNo + @".gif"));

      }

      return cardImages[dispNo];

      }

      }

      Переменная cardImages – массив изображений карт. Первоначально все изображения карт в этом массиве пусты. В этом коде переменная dispNo является индексом массива и именем файла карты. Если данный элемент массива – пустой указатель (null), изображение загружается и затем может быть нарисовано. В следующий раз, когда

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