Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ.doc
Скачиваний:
4
Добавлен:
15.09.2019
Размер:
1.61 Mб
Скачать

1.2 Выбор среды программирования

В качестве языка программирования мной был выбран Delphi, реализованный в программе Borland Delphi 7. Это объясняется следующими критериями:

  • язык Delphi является объектно-ориентированным;

  • простота и удобность интерфейса редактора;

  • начиличие базы знаний о данном языке;

  • легкость написания кода;

  • код прост для восприятия и легко читаем.

2. Разработка

2.1 Uml диаграмма классов

Диаграмма UML классов представлена ниже на рис 2.1.

Класс TFirstClass:

SetValue – задание свойству нового значения

GetValue – чтение данных из свойства

Класс TOkrug:

FNaselenie – минимальное число бюллютеней

FMaskNas – флаг для скрытия поля FNaselenie

FMaskMinVs – флаг для скрытия поля FMinimalMoney

FLider – индекс лидера

FLoyalnost – параметр округа

FReklama – индекс одобренной рекламы

FMinimalMoney – минимальная величина взятки

FAct – флаги для разрешения использования действий

SetValue – задание свойству Lider нового значения

GetValue – чтение данных из свойства Lider

Класс TKandidat:

FNominal – капитал кандидата

FReiting – рейтинг кандидата

SetValue – задание свойству Nominal нового значения

GetValue – чтение данных из свойства Nominal

SetReiting – задание свойству Reiting нового значения

GetReiting – чтение данных из свойства Reiting

ProverkaMoney – проверка на достаточность представленных средств для выполнения действия

2.2 Разработка проекта программы

Создадим главный класс TFirstClass, который будет содержать в себе абстрактные процедуру SetValue и функцию GetValue, которые будут переопределяться в потомках, как методы работы со свойствами. Данный класс имеет 2 дочерних класса Tokrug и Tkandidat. У класса Tkandidat имеется дочерний класс Tzhylik, в котором изменяется процерура SetReiting (ее значение всегда увеличивается на 2).

Рассмотрим принцип работы программы. При вызове процедуры FormCreate объекту выделяется память, и инициализируются его основные поля вызовом процедуры OkrugRandom. При работе программы объекты данного класса тесно работают с полями объекта класса TKandidat, выделение памяти и инициализация полей основных полей через соответствующие им свойства которого происходит при вызове процедуры TForm2.ButtonStartClick (кнопка подтверждения выбора кандидата и начала игры). В зависимости от выбора пользователя, вся работа происходит только с объектом данного кандидата.

Рассмотрим принцип работы действий, которые можно выполнять в программе для работы с объектами.

Процедура TForm2.Actions анализирует, было ли данное действие выполнено за текущий день с помощью значения поля объекта okr.act. Если действие еще не было выполнено, то идет проверка на достаточность средств кандидата с помощью функции TForm2.ProverkaMoney, которая сравнивает значения свойства объекта Nominal и передаваемый параметр суммы, необходимой для выполнения действий. Если процедура значение true, то данное действие может быть выполнено. Если действие выполнено, то вызывается процедура GetBonus, которая распределяет значение свойства Reiting по объектам данного класса и вычитает из свойства Nominal нашего кандидата затраченную сумму за действие. При положительном выполнении действий увеличивается на 25 значение поля объекта класса Tokrug Floyalnost. Если значение = 50, то изменяются значения полей реализации процедуры TForm2.Actions изменяется значение Nominal и полей округа okr.FMaskNas и okr.FMaskMinVs. Если значение = 100, повторно вызывается с положительным эффектом процедура GetBonus. Далее рассмотрим выполнение всех действий.

  • Реклама. Процедура TForm2.ButtonReklamaClick сравнивает выбранный лозунг со значением поля FReklama того округа, в котором выполняется действие. Если значения удовлетворяют условием, то кандидат получает бонус. Выбранный лозунг заносится в бегущую строку нашей формы. Данное действие запрещается вызывать в течении этого дня путем изменением поля okr.act[0], которое сбрасывается со сменой игрового дня в изначальное значение.

  • Просьбы населения. Если выполнены начальные условия, то данное действие выполняется в процедуре TForm2.Actions и запрещает свой вызов навсегда изменением значения поля okr.act[1].

  • Дать взятку. Процедура TForm2.ButtonVzyatkaClick сравнивает введенное число со значением поля объекта данного округа FMinimalMoney. Если введенное число больше или равно значению поля, то кандидату идет бонус, иначе падение рейтинга. Изменение свойства Nominal происходит в любом случае. Действие выполняется и запрещает свой вызов навсегда изменением значения поля okr.act[2].

  • Подделать бюллетени. Процедура TForm2.ButtonNasClick сравнивает введенное число со значением поля объекта данного округа Fnaselenie. Если введенное число больше или равно значению поля, то кандидату идет бонус, иначе падение рейтинга. Изменение свойства Nominal происходит в любом случае. Действие выполняется и запрещает свой вызов навсегда изменением значения поля okr.act[3].

  • Разведка. Путем реализации процедуры TForm2.Actions изменяется значение Nominal и полей округа okr.FMaskNas и okr.FMaskMinVs. Действие выполняется и запрещает свой вызов навсегда изменением значения поля okr.act[4].

При смене игрового дня происходит изменение значения свойства Nominal объекта класса TKandidat по следующей формуле:

kandidat1.Nominal:=kandidat1.Nominal+kandidat1.Reiting*10000,

где kandidat1 – имя объекта.

По окончании всех дней идет сравнение значений свойств Reiting всех объектов классов TKandidat и TZhylik. Объект, у которого значения свойства будет максимальным, становится победителем.

Для определения выбранного округа, а соответственно и одноименного объекта, используется функция TForm2.NameOfOkrug.

Для обновления значений динамических объектов используется процедура TForm2.UpDates.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]