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

Автор: Валерий Алексеевич Жарков
Издательство: Издательские решения
Серия:
Жанр произведения:
Год издания: 0
isbn: 9785005910844
Скачать книгу
дважды щёлкаем по команде Help. Появившийся шаблон метода после записи нашего кода принимает следующий вид.

      Листинг 1.9. Метод для вывода справочной формы.

      private void HelpToolStripMenuItem_Click (object sender, EventArgs e)

      {

      showHelp ();

      }

      Теперь программа должна управлять карточной игрой, используя любые клавиши, например, верхнюю (Up) и нижнюю (Down), левую (Left) и правую (Right) клавиши со стрелками, а также клавишу Enter (для начальной сдачи карт игроку и Банкомёту и последующей сдачи по одной карте игроку). В панели Properties (для формы Form1) на вкладке Events дважды щёлкаем по имени события 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