Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?thesises=110
Дата изменения: Fri May 5 15:24:32 2006
Дата индексирования: Tue Oct 2 03:16:24 2012
Кодировка: koi8-r

Поисковые слова: спрайты

Описание программы
1. В игре использован модуль a_menu, в котором вводится объект amenu
для работы с меню, состоящих из кнопок. Модуль позволяет при помощи мыши
нажимать кнопки, переходить из меню к меню. Процедура use_mouse возвращает
в исходную программу код нажатой кнопки, в зависимости от которого
происходит действие.

2. Модуль mouse позволяет использовать мышь в игре. Модуль использует
обращение к регистрам процессора. Модуль mouse взят из книги «Turbo Pascal»
С. А. Немнюгина.

3. Для создания спрайтов монстров использован модуль t_sl. В процедуре
make_mon заполняется массив 20х20, элементы которого - цвета точек экрана.
После окончания рисования спрайта он сохраняется в файл на диске. Этот
редактор можно использовать для редакции готовых спрайтов.

4. Модуль t_map используется для создания, редактирования, сохранения
на диске карт для игры. После этого можно играть в них вдвоем. Для
управления активным квадратиком используются клавиши с цифрами: 2,4,6,8.
Для заполнения активного квадратика травой - g, водой - w, камнями - s,
домом - r, порталом - q, активным монстром - z, для выбора активного
монстра - o,p. При заполнении карты монстрами необходимо выйти в меню и
выбрать номер игрока, которому будет принадлежать монстр. Для сохранения
выберите команду save в меню и введите имя файла.

5. Выбор карты, инициализация меню, начальная заставка хранятся в
модуле t_begin.

6. Основные объекты игры находятся в модуле t_main. В нём объявлены два
объекта: mapobj и gameobj.
Объект mapobj используется для хранения и отображения на экране карты.
В объект включены массив территории, где хранится информация о типе клетки
(дом, трава, вода и т. д.), и массив монстров, где записано, какой монстр
находится в клетке. Каждая ячейка массива имеет своё значение, в
зависимости от которого производятся различные действия над ячейкой.
Индексы ячейки соответствуют координатам соответствующей клетки. Спрайты
монстров хранятся в массиве pic, который заполняется в начале программы.
Сначала из файла считываются цвета точек экрана, потом изображение
сохраняется в элементе массива pic с помощью процедуры getimage. В
процедуре clet_draw перебираются элементы массива относительно заданной
точки и рисуются на экран с помощью процедуры putimage. Рисование мини-
карты происходит аналогичным образом.
Также в модуле объявлены: массив характеристик монстров, массив всех
монстров игрока, запись plr_sys, хранящая все характеристики игрока.
Объект gameobj управляет всем процессом игры: считывает нажатые клавиши
клавиатуры, вызывает процедуры рисования карты, подсчитывает повреждения.
Вначале запускаются различные процедуры инициализации. Потом процедура game
считывает код нажатой клавиши меню и запускает процедуру active, которая и
управляет движением монстров. Монстр передвигается при помощи клавиш с
цифрами: 2,4,6,8. Клавиша Tab позволяет перемещаться от монстра к монстру.
Каждый юнит может передвигаться на определенное количество клеток за ход.
Если по направлению движения юнита находится пустая клетка с травой, то
юнит перемещается, если на клетке находится препятствие, то перемещения не
происходит, если на клетке стоит вражеский юнит, то происходит битва между
ними: юнит игрока наносит удар. Существуют юниты-стрелки, которые могут
нанести удар на расстоянии. Для этого необходимо нажать клавишу s. Всего
существует 35 видов монстров, которые разделены на 7 кланов. В каждом клане
монстры разделяются по уровню: чем выше уровень, тем сильнее монстр.
Характеристики монстра показываются справа от карты. На каждой клетке может
располагаться десять юнитов, объединенных в отряд. Каждый юнит отряда
обладает своими жизнями. Справа от карты пишутся жизни последнего юнита в
отряде. После того, как сходили все юниты, надо нажать кнопку e для
окончания хода.
Если выбран режим двух игроков, то ходит второй игрок по тем же
правилам. Если выбрана кампания, то ходит компьютер. Компьютер не обладает
сильным интеллектом. Он не ведет своих юнитов на игрока, а ждет, пока юнит
игрока не появится в поле видимости юнита компьютера. Тогда этот юнит
стремится атаковать врага. После движения всеми юнитами компьютер
заканчивает ход.
Игра продолжается до полного уничтожения одного из игроков. Игру можно
сохранять и загружать.