Чтение онлайн

на главную

Жанры

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

{

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 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","Eight","Nine","Ten", "Jack","Queen","King" };

/// <summary>

/// Returns the value in points of a given card,

/// according to BlackJack rules

/// </summary>

public int BlackJackScore

{

get

{

return scores[(CardNo – 1) % 13];

}

}

/// <summary>

/// Returns true if the card is a picture

/// (i.e. jack, queen or king)

/// </summary>

public bool IsPicture

{

get

{

return isPicture[(CardNo – 1) % 13];

}

}

/// <summary>

/// Returns text of the suit of this card

/// </summary>

public string Suit

{

get

{

return suitNames[(CardNo – 1) / 13];

}

}

/// <summary>

/// Returns the text of the value of this card

/// </summary>

Поделиться:
Популярные книги

Особое назначение

Тесленок Кирилл Геннадьевич
2. Гарем вне закона
Фантастика:
фэнтези
6.89
рейтинг книги
Особое назначение

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Императорский отбор

Свободина Виктория
Фантастика:
фэнтези
8.56
рейтинг книги
Императорский отбор

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Огненный князь 3

Машуков Тимур
3. Багряный восход
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Огненный князь 3

Восход. Солнцев. Книга VI

Скабер Артемий
6. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга VI

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Волк 5: Лихие 90-е

Киров Никита
5. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 5: Лихие 90-е

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18