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

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

СКАЧАТЬ KeyDown. Появившийся шаблон обработки нажатий всех клавиш после записи нашего кода для нажатий только трех клавиш (относящимся к тематике данной главы) принимает следующий вид.

      Листинг 1.10. Метод для обработки нажатий клавиш.

      private void Form1_KeyDown (object sender, KeyEventArgs e)

      {

      if ((e.KeyCode == System.Windows.Forms.Keys. Up))

      {

      doUp ();

      e. Handled = true;

      }

      if ((e.KeyCode == System.Windows.Forms.Keys.Down))

      {

      doDown ();

      e. Handled = true;

      }

      if ((e.KeyCode == System.Windows.Forms.Keys. Enter))

      {

      //Набираем себе карты:

      doEnter ();

      }

      }

      Мы закончили написание программы в главный класс Form1 (для формы Form1 с пользовательским интерфейсом игры). В этом проекте движок игры (Engine Game) находится не в файле Form1.cs (как обычно бывает), а в следующем файле CardEngine. cs.

      Теперь в наш проект добавляем новые файлы (для программирования соответствующих игровых действий) по следующей схеме.

      В панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item. В панели Add New Item выделяем шаблон Code File, в окне Name записываем имя нового файла с расширением *.cs и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем следующий код.

      Листинг 1.11. Новый файл CardEngine. cs.

      using System;

      using System.Collections;

      using System. Drawing;

      namespace PocketJack

      {

      /// <summary>

      /// Provides the behaviours required to manage and draw cards

      /// </summary>

      public class Card

      {

      /// <summary>

      /// The number of the card, in the range 1 to 52

      /// </summary>

      public byte CardNo;

      /// <summary>

      /// Indicates if the card is to be drawn face up.

      /// True by default.

      /// </summary>

      public bool FaceUp = true;

      /// <summary>

      /// The images of the cards. Stored for all the cards.

      /// The image with number 0 is the

      /// back pattern of the card

      /// </summary>

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

      /// <summary>

      /// The attribute to be used when drawing the card

      /// to implement transpancy

      /// </summary>

      static public System.Drawing.Imaging.ImageAttributes

      cardAttributes;

      /// <summary>

      /// Used when loading card images prior to drawing

      /// </summary>

      static private System.Reflection.Assembly execAssem;

      /// <summary>

      /// Sets up the color and attribute values.

      /// </summary>

      static Card ()

      {

      cardAttributes =

      new System.Drawing.Imaging.ImageAttributes ();

      cardAttributes.SetColorKey(Color.Green, Color.Green);

      execAssem =

      System.Reflection.Assembly.GetExecutingAssembly ();

      }

      /// <summary>

      /// Scores for each of the cards in a suit

      /// </summary>

      static private byte [] scores =

      new byte [] {11, //ace

      2,3,4,5,6,7,8,9,10, //spot cards

      10,10,10}; //jack, queen, king

      /// <summary>

      /// Picture information for each card in a suit

      /// </summary>

      static private bool [] isPicture =

      new bool [] {false, //ace

      false, false, false, false, false, false,

      false, false, false, //spot cards

      true, true, true}; //jack, queen, king

      /// <summary>

      /// Names of the suits, in the order that of the suits

      /// in the number sequence

      /// </summary>

      static private string [] suitNames =

      new string [] {«club», «diamond», «heart», «spade»};

      /// <summary>

      /// Names of individual cards, in the order of the cards

      /// in a suit

      /// </summary>

      static private string [] valueNames =

      new string [] {«Ace», «Deuce», «Three», «Four», «Five», «Six»,

      «Seven», СКАЧАТЬ