Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проект №7. Описание игры с использованием ООП.docx
Скачиваний:
23
Добавлен:
11.04.2015
Размер:
223.71 Кб
Скачать

7.7.3 Метод GameFinish() дает информацию окончена ли игра или нет.

В нашем примере максимальная сумма очков равна 100. Логический блок, который «скажет», окончена ли игра, должен проверить, достигнута или превышена, набранная человеком или компьютером сумма максимума.

Метод GameFinish() будет возвращать логическое значение true, если один из игроков набрал больше 100 очков, и false в противном случае.Такую проверку можно записать так:

Human.Scores >= 100 || Computer.Scores >= 100. Это выражение удобно использовать в операторе return, чтобы вернуть в программу логическое значение true или false:

Добавьте в текст Game.cpp описание метода.

// Проверка на окончание игры 

bool TReferee::GameFinish()

{

return (Human.Scores >= 100 || Computer.Scores >= 100);

}

Сохраните проект весь, командой Save All или кнопкой на панели инструментов

Допустим, что нам захочется немного изменить правила игры и повысить или понизить порог очков (100), после превышения которого партия считается оконченной. Число 100 упоминается несколько раз в разных местах файла, и постоянно менять все операторы, где оно используется, довольно хлопотно. Поэтому лучше всего описать число 100 как константу и в дальнейшем обращаться к ней по имени. Тогда это число можно будет при необходимости заменить на любое другое число, внеся правку только в одно заранее известное место.

Константы обычно описываются в начале файла, сразу за строками включения заголовочных файлов. Синтаксис описания константы таков:

const имя_константы = значение '.;

Если в программе некоторая числовая величина встречается два и более раз, ее лучше всего описать в виде константы, чтобы при-необходимости быстро изменить. Хорошим стилем считается использование в качестве имен констант слов, записываемых заглавными буквами. Для разделения нескольких слов в одном названии применяется символ подчеркивания «_».

Давайте опишем константу GAME_FINISH_SCORE в начале файла Game.cpp:

const GAME_FINISH_SCORE = 100; и измените текст метода GameFinish() заменив чило 100 на константу:

return (Human.Scores >= GAME_FINISH_SCORE || Computer.Scores >= GAME_FINISH_SCORE);

Сохраните проект весь, командой Save All. Выполните компиляцию модуля Game.cpp, если появились ошибки исправьте их сейчас, а то в дальнейшем сложно будет понять где именно закрались ошибки при компиляции всей программы.

На данном этапе завершаем написание кода дополнительного модуля Game.cpp., поэтому после успешной компиляции начните оформлять отчет по проекту . Скопируйте и добавьте в него файлы Game.h и Game.cpp, в виде таблицы , впишите пояснения во втором столбце. Так как на этом этапе работа с созданием и описанием классов пользователя завершена, далее будет простое структурное программирование описывающее алгоритм игры, с использованием переменных класса описанных в модуле Game.cpp.

8. Продолжаем работать с интерфейсом программы на форме Form1.( смотри рисунок 1)

Реализации работы с интерфейсом будет описываться в файле DiceUnit.cpp.

Добавляем переменную судью – Referee, в модуль формы Form1 (который содержит всю информацию о проектируемом окне и расположенных на нем компонентах)файла DiceUnit.h

В конце описание класса TForm1 (оно начинается со слов «class TForm1»), вслед за конструктором и можно добавлять новые переменные, свойства и методы, в уже описанный системой визуального программирования класс TForm1.

public: // User declarations

_fastcall TForm1(TComponent* Owner);

TReferee Referee;

Заголовочные файлы с расширением *.h служат для информации о доступных в данном файле (программном модуле) классах, реализация которых расположена в других файлах.

В начале файла DiceUnit.h надо подключить заголовочный файл Game.h (в котором содержится описание класса TPIayer). Это делается командной строкой:

#include "Game.h"

Теперь программу можно откомпилировать ALT+F9 и запустить F9, только работать она пока не будет — ведь в ней не определены действия, которые будут происходить при выборе пунктов меню или нажатии на командные кнопки.

Теперь попробуем описать алгоритм работы программы в зависимости от действий пользователя и возникновения тех или иных событий.