Игровая программа Поселенцы

Содержание

Слайд 2

Цели: Создать градостроительный симулятор с элементами ролевой игры Сделать удобную и

Цели:

Создать градостроительный симулятор с элементами ролевой игры
Сделать удобную и понятную для

пользователя систему управления юнитами
Закрепить навыки работы с динамическими списками
Слайд 3

Задачи: Разработать удобную для работы над проектом структуру данных Сделать многоуровневую

Задачи:

Разработать удобную для работы над проектом структуру данных
Сделать многоуровневую карту
Разработать

подпрограмму случайной генерации карты
Реализовать блок, отвечающий за выполнение юнитами различных действий (движение, исполнение заданной команды, атака противника)
Слайд 4

Структура данных о юнитах pObject=^tObject; tObject=Record Next: pObject; Type_, Action: byte;

Структура данных о юнитах

pObject=^tObject;
tObject=Record
Next: pObject;
Type_, Action: byte;
i,j,h,di,dj,dh,fi,fj,fh: shortint;
vect,offs:shortint;
xp,damage,defence,skill:integer;
Oldx,oldy:array [0..1] of Integer;
AttackObj:

pObject;
Bufer: array [0..1];
Komand: array [1..5];
End;
Слайд 5

Генерация случайной многоуровневой карты

Генерация случайной многоуровневой карты

Слайд 6

Вид фрагмента карты в изометрии

Вид фрагмента карты в изометрии

Слайд 7

Циклические команды юнита Цель достигнута? -1 ед. запасов обрабатываемого ресурса Удаление

Циклические команды юнита

Цель достигнута?

-1 ед. запасов
обрабатываемого ресурса

Удаление растения (камня)

Начальная

стадия растения (камня)

Tz^.Action:=komNaSklad

Движение к складу…

Да

Ресурс=Wild

Ресурс=Planted

Слайд 8

Достигли склада? Увеличение resource Поиск нового ресурса данного типа Новый ресурс

Достигли склада?

Увеличение resource

Поиск нового ресурса данного типа

Новый ресурс найден?

Новая цель

Перейти

к следующей поставленной команде

Буфер команд пуст?

Tz^.Action:=0

Да

Да

Да

Нет

Нет

Слайд 9

Атака противников Есть противник в зоне видимости? Tz^.Action:=KomAttack; Tz^.AttackObj:=враг; Враг^.AttackObj:=tz; Враг^.Action:=KomAttack;

Атака противников

Есть противник
в зоне видимости?

Tz^.Action:=KomAttack;
Tz^.AttackObj:=враг;
Враг^.AttackObj:=tz;
Враг^.Action:=KomAttack;

Tz^.Action:=KomPresledovanie;
Tz^.fi, tz^.fj, tz^.fh <= координаты противника;

Враг

в соседней ячейке?

Да

Да

Нет

Движение в соседнюю свободную ячейку…

Нет

Слайд 10

Tz^.action=komPresledovanie? Tz^.Action:=KomAttack; Движение к противнику… Да Враг в соседней ячейке? Да Нет

Tz^.action=komPresledovanie?

Tz^.Action:=KomAttack;

Движение к противнику…

Да

Враг в соседней ячейке?

Да

Нет

Слайд 11

Tz^.Action=KomAttack? tz^.AttackObj^.xp:=tz^.AttackObj^.xp-round(tz^.damage-tz^.damage*tz^.attackobj^.defence/100); Tz^.AttckObj^.xp Враг в соседней ячейке? Tz^.action= komPresledovanie Удалить объект

Tz^.Action=KomAttack?

tz^.AttackObj^.xp:=tz^.AttackObj^.xp-round(tz^.damage-tz^.damage*tz^.attackobj^.defence/100);

Tz^.AttckObj^.xp<=0

Враг в соседней ячейке?

Tz^.action=
komPresledovanie

Удалить объект (противника) из списка

Сообщить союзникам о его

гибели

Да

Нет

Да

Слайд 12

Аналоги Игра «Towns»

Аналоги

Игра «Towns»

Слайд 13

Достоинства Карта имеет псевдотрёхмерный вид Многоуровневость ландшафта Разнообразие построек и растительности

Достоинства

Карта имеет псевдотрёхмерный вид
Многоуровневость ландшафта
Разнообразие построек и растительности
Многочисленность команд,

выполняемых юнитами
Условия приближены к реальным (голод, нападения противников)
Слайд 14

Недостатки Мало разновидностей противников Отсутствие торговли Нельзя сохранить игру

Недостатки

Мало разновидностей противников
Отсутствие торговли
Нельзя сохранить игру

Слайд 15

Выводы Удалось создать градостроительный симулятор, в котором: 1) Разработана удобная структура

Выводы

Удалось создать градостроительный симулятор, в котором:
1) Разработана удобная структура данных
2) Реализована

генерация случайной многоуровневой карты
3)
Закреплены навыки работы с динамическими списками