Программный код пункта меню «Бросить кубик»

После того как все описанные действия будут выполнены, программа окажется в некотором промежуточном состоянии: прошлая игра уже окончилась, о чем имеется соответствующая запись в списке, а новая еще не началась. Такое состояние надо отслеживать особо, чтобы при щелчке на кнопке Бросить кубик никаких действий не происходило, а выдавалось бы сообщение о том, что новая партия еще не начата.

С помощью Инспектора объектов задайте пункту меню Бросить кубик название UseDiceltem и создайте метод реакции на выбор этого пункта. Он получит название UseDiceItemClick().

void __fastcall TForm1:: UseDiceItemClick(TObject *Sender)

{

// добавить код самостоятельно по указаниям, приведенным ниже

}

1. Прежде всего, надо проверить, закончена ли текущая партия. Если это так, то желательно сообщить пользователю, что сначала надо начать новую партию,.а дальнейшие действия текущего метода не выполнять:

if(Referee.GameFinish()) {

ShowMessage(GAME_FINISHED_STR);

return;

}

2. Если же игра продолжается, то сначала требуется проверить, не выпала ли единица. Если да, то с помощью функции ShowMessage() надо сообщить об этом человеку, для чего предварительно стоит описать константу: Не забывайте: все константы располагаются в файле Text.h

const AnsiString ONE_STR = "Выпала единица";

3. Если выпала не единица, то необходимо увеличить набранные на текущем ходу очки на выпавшее число, по окончании всех проверок обновить содержимое экранных полей и выполнить проверку на завершение игры.

Выглядеть соответствующий текст будет так:

// если выпала единица...

if(Referee.Dice.GetDiceValue() == 1)

{

// показать соответствующее сообщение ShowMessage(ONE_STR);

// передать очередь хода- компьютеру

// (набранные очки человеку не засчитываются)

Referee.ComputerMove();

}

// иначе запомнить выброшенные очки:

else Referee.Human.CurrentScores += Referee.Dice.LastValue;

4. В противном случае надо просто увеличить значение переменной

Referee. Human.CurrentScores на выпавшее число (оно хранится в переменной

Referee. Dice.LastValue):

5. В заключение вызываются два метода:

Showlnfo(); // показать новые данные EndGameTest(); // проверка, не завершена ли партия


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



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