Описание класса судьи TReferee

Описание класса СУДЬИ надо продолжить в файле Game.h, вслед за описанием класса TPlayer:

class TReferee

{

public:

TPlayer Human, Computer; // две переменные типа TPlayer — игрока-человека и

// игрока- компьютера

TDice Dice; // переменная типа TDice — кубик

void ComputerMove(); // ТРИ МЕТОДА: ход компьютера

bool GameFinish(); // проверка на конец партии, метод возвращает значение true || false

void NewGame (); // новая игра

};

Вполне возможно, что в дальнейшем понадобятся и другие вспомогательные методы. Будем добавлять их по мере возникновения такой потребности. Способность предусмотреть и заранее точно определить, какие методы каждого класса будут реально востребованы в работе, считается признаком высокого профессионального мастерства программиста.

7.7.1. Алгоритм реализация метода NewGameQ в файле Game.cpp (смотри рисунок 5)

Сначала надо проинициализировать внутренние переменные каждого игрока, а затем определить, чья очередь хода. Для этого можно бросить кубик, и если на нем выпадут числа 1,2 или 3, то надо сделать ход за компьютер ComputerMove(), в противном случае — считать, что очередь хода человека и ожидать его действий(т.е. вернуться к игре и выполнить ход за человека, нажав кнопку или выбрав пункт меню Бросить Кубик), завершив работу метода.

В описании класса судьи введена переменная Human, которая определена наследником класса TPlayer, поэтому переменной Human доступны все данные класса

class TPIayer

{

public:

int Scores, CurrentScores, WinNum;

void Init();

};

Правило обращения к переменным класса:

при работе со стандартными или автоматически созданными объектами C++Builder (окна и расположенные на них визуальные компоненты), представленными указателями, для доступа к их свойствам и методам надо использовать знак «->», а при работе с переменными собственных классов — символ «.» (подробно использование точки или -> описано выше в теории).

Рис.5 Список переменных и методов, доступных HUMAN

На рисунке 5 при обращении к переменной класса Human, после точки появляется список (система Builder C++ таким образом контролирует использование принципов ООП).

Если списка данных не появилось, следовательно надо проверить идентификаторы в описании классов

При вводе объекта Dice, проверьте корректность Dice., в появившемся списке выберите метод GetDiceValue()

Текст метода приведен ниже:

// Новая игра

void TReferee::NewGame()

{

Human.Init();

Computer.Init();

if(Dice.GetDiceValue() <= 3) ComputerMove();

}

7.7.2. Алгоритм работы метода ComputerMove() пока можно реализовать самым простым способом. Для простоты предположим, что компьютер во время своего хода всегда бросает кубик только один раз.

// Ход компьютера

void TReferee::ComputerMove()

{

Computer.CurrentScores = 0; // Пока на данном ходу не набрано никаких очков:

// Если на кубике выпала не единица, то...

if(Dice.GetDiceValueO!= 1)

// Запомнить очки текущего хода и Подсчитать очки

Computer.CurrentScores = Dice.LastValue;

Computer.Scores = Computer.Scores + Computer.CurrentScores;

// Так как теперь ход человека, надо обнулить очки его текущего хода:

Human.CurrentScores = 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: