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

2 Анализ технического задания

Для решения данной задачи необходимо учесть следующие особенности:

    1. использование языка Delphi ;

    1. интерфейс MDI;

- конструктор;

- деструктор;

- свой класс;

    1. поля;

- наследование;

- строки состояния и подсказки;

- radio – группы и CheckBox;

- программирование клавиатуры;

- использование диаграмм;

- использование интерфейса Drag&Dock;

- помощь.

3 Кодирование программы

При написании программы для расчета квартплаты были использованы определенные зарезервированные идентификаторы, имеющие специальные значения для компилятора, которые описаны в этом разделе.

Типы значений:

    1. double — тип с плавающей запятой, поддерживающий приблизительно 15 цифр точности;

    2. boolean — позволяет принимать только значения true и false.

Ключевые слова:

- constructor — специальный блок инструкций, вызываемый при создании объекта. Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов;

    1. inherited — вызов конструктора;

    2. uses — список использованных модулей;

    3. destructor — деструктор.

Модификаторы:

- public является модификатором доступа для типов и членов типов. Общий (public) доступ является уровнем доступа с максимальными правами. Ограничений доступа к общим членам не существует.

Операторы:

    1. if — оператор выбора, выбирает оператор для выполнения на основе значения выражения Boolean;

    2. for — оператор инерции, повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false.

4 Разработка алгоритма

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

На рисунке 4.1 представлена блок-схема функции TForm1.ptimerTimer, которая отвечает за уменьшение топлива и боеготовности. Если танк заглох, и игра окончена. Если бензина нет, то игра останавливается (game:=false).

Процедура TForm1.ptimerTimer:

Если tt=1 то выбираем танк 1 иначе выбираем танк 2. Если у танка 1 уровень бензина равен нулю (t1.petrol=0), то Game:=false (останавливаем игру), в статус бар выводим сообщение «Танк заглох. Игра окончена». Присваиваем всем таймерам значение false (останавливаем таймеры). Если у танка 2 уровень бензина равен нулю (t2.petrol=0) или закончились снаряды (t2.fight=0), то повторяем аналогичные действия (как для танка 1).

Рисунок 4.1 – процедура TForm1.ptimerTimer (начало)

Рисунок 4.2 – процедура TForm1.ptimerTimer (продолжение)

TForm2.FormKeyPress:

Если нажат пробел (это выстрел) (key=' ') и снаряда нет на поле (isTracer=false) и это второй танк (tt=2), то в зависимости от направления танка, рисуем снаряд. Если танк повёрнут налево, то снаряд летит влево, аналогично для других направлений. Отмечаем, что снаряд летит (isTracer:=true) в направлении, в котором повёрнут танк (trto:=t2.direction). Добавляем 5 снарядов (t2.fight:=t2.fight+5). Если снаряды закончились (t2.fight=0), то пополняем их запас (t2.fight:=100).

Если нажата клавиша управление танком: (key='w') or (key='W') or (key='ц') or (key='Ц'), то танк движется вверх; (key='s') or (key='S') or (key='ы') or (key='Ы'), то танк движется вниз; (key='a') or (key='A') or (key='ф') or (key='Ф'), то танк движется влево; (key='d') or (key='D') or (key='в') or (key='В'), то танк движется вправо.

Если на карте есть ресурс (himg.visible=true), то проверяем, не наехал ли танк на него (abs(himg.Top-timg.top)<timg.Width) and (abs(himg.Left-timg.Left)<timg.Height) – тогда ресурс исчезает (himg.Visible:=false) и меняем параметры. Если танк 1 наехал на аптечку, то если запас пуст и здоровья много, помещает её в запас, иначе восстанавливает здоровье (t1.health:=100). Аналогично для танка 2. Если танк 1 наехал на канистру, то если запас пуст и топлива много, помещает её в запас, иначе заправляется (t1.petrol:=100). Аналогично для танка 2.

Рисунок 4.2 – процедура TForm2.FormKeyPress (начало)

Рисунок 4.3 – процедура TForm2.FormKeyPress (продолжение)

Рисунок 4.4 – процедура TForm2.FormKeyPress (продолжение)

Рисунок 4.4 – процедура TForm2.FormKeyPress (продолжение)