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

Шрифт
Интервал


Листинг 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

{

///

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

///

public class Card

{

///

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

///

public byte CardNo;

///

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

/// True by default.

///

public bool FaceUp = true;

///

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

/// The image with number 0 is the

/// back pattern of the card

///

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

///

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

/// to implement transpancy

///

static public System.Drawing.Imaging.ImageAttributes

cardAttributes;

///

/// Used when loading card images prior to drawing

///

static private System.Reflection.Assembly execAssem;

///

/// Sets up the color and attribute values.

///

static Card()

{

cardAttributes =

new System.Drawing.Imaging.ImageAttributes();

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

execAssem =

System.Reflection.Assembly.GetExecutingAssembly();