Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 8: Программирование на Visual C# искусственного интеллекта. Издание 2. Продолжение 1
Шрифт:
Листинг 1.12. Новый файл Pot.cs .
using System;
namespace PocketJack
{
/// <summary>
/// Summary description for Betting.
/// </summary>
public class Pot
{
private int betValueChangeValue;
private int betValue;
private int potValue;
private const int INITIAL_POT_VALUE = 500;
private const int INITIAL_BET_CHANGE_VALUE = 5;
public int BetValue
{
get
{
return betValue;
}
}
public int PotValue
{
get
{
return potValue;
}
}
public void ResetPot
{
betValueChangeValue = INITIAL_BET_CHANGE_VALUE;
betValue = INITIAL_BET_CHANGE_VALUE;
potValue = INITIAL_POT_VALUE;
}
public void CheckPot
{
if (betValue > potValue)
{
if (System.Windows.Forms.MessageBox.Show(
"Insufficient funds for the bet." +
"Do you want to reload the pot?",
"Bank",
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Question,
System.Windows.Forms.
MessageBoxDefaultButton.Button1) ==
System.Windows.Forms.DialogResult.Yes)
{
ResetPot;
}
else
{
betValue = potValue;
}
}
}
public void DoIncreaseBet
{
betValue = betValue + betValueChangeValue;
CheckPot;
}
public void DoDecreaseBet
{
if (betValue >= betValueChangeValue)
{
betValue = betValue – betValueChangeValue;
}
}
public void PlayerWins
{
// win back 2 * our stake
potValue = potValue + betValue;
//potValue = potValue + betValue; //We commented out.
}
public void HouseWins
{
CheckPot;
}
public void DoPushBet
{
// put the betValue back in the potValue
potValue = potValue + betValue;
}
public void DoPlaceBet
{
potValue = potValue – betValue;
}
public Pot
{
ResetPot;
}
}
}
После
В этих файлах использованы XML-комментарии (XML comment), где XML – Extensible Markup Language – расширяемый язык разметки, типа:
/// <summary>
/// Description of a variable:
/// </summary>
который состоит из начального тэга (start tag):
/// <summary>
и конечного тэга (end tag):
/// </summary>
между которыми записывается сам комментарий:
/// Описание переменной:
/// Description of a variable:
В отличие от обычных комментариев после двойного слеша // или между двух символов /*…*/, в любом месте программы при наведении указателя мыши на переменную с XML-комментарием появляется подсказка, в которой имеется не только тип и класс переменной (как для переменной с обычным комментарием или вообще без комментария), но также имеется и её описание на любом языке, в том числе на русском языке, которое мы записали между начальным и конечным тэгами. XML-комментарии имеют и другие преимущества, описанные в специальной литературе.
К
недостатку XML-комментария, относятся две дополнительные строки начального и конечного тэгов, увеличивающие (и без них) большое количество строк в программе.1.20. Методика рисования текстов на основе класса
Для рисования текстов на экране при помощи универсального (для многих других игр) класса Utilities,
В панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item. В панели Add New Item выделяем шаблон Code File, в окне Name записываем имя нового файла с расширением *.cs и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем следующий код.
Листинг 1.13. Файл Utilities.cs.
using System.Drawing;
namespace PocketJack
{
public class Utilities
{
static private SolidBrush messageBrush =
new SolidBrush(Color.Black);
public static void BigText(string message, int x, int y,
Color back, Color fore, Font messageFont, Graphics g)
{
int i;
messageBrush.Color = back;
for (i = 1; i < 3; i++)
{
g.DrawString(message, messageFont, messageBrush,
x – i, y – i);
g.DrawString(message, messageFont, messageBrush,
x – i, y + i);
g.DrawString(message, messageFont, messageBrush,
x + i, y – i);
g.DrawString(message, messageFont, messageBrush,
x + i, y + i);
}
messageBrush.Color = fore;
g.DrawString(message, messageFont, messageBrush, x, y);
}
public Utilities
{
// TODO: Add constructor logic here
}
}
}
Этот файл Utilities.cs мы будем использовать в нескольких приведённых далее играх для рисования текстов на экране , но там мы не будем приводить этот файл, для экономии места в книге, а будем давать только ссылку на этот параграф.
Сразу же здесь отметим, что для использования данного файла Utilities.cs в проекте с другим именем (отличным от имени данного проекта PocketJack), необходимо:
или в данном файле Utilities.cs вместо имени пространства имён (с именем проекта PocketJack) в строке:
namespace PocketJack
записать имя нового проекта,
или в новом проекте в файле, где используется ссылка на данный файл Utilities.cs, в верхней части импортировать (записать директиву) пространства имён PocketJack:
using PocketJack;
1.21. Методика добавления информации в справочные формы
Для ввода в проект новой (справочной) формы, по которой игрок будет изучать, например, правила игры, в меню Project выбираем Add Windows Form, в панели Add New Item оставляем заданные по умолчанию параметры и щёлкаем кнопку Add. В ответ Visual Studio выводит новую форму Form2 (рис. 1.31) и добавляет в панель Solution Explorer новый пункт Form2.cs.