<< Вернуться на главную

СКНЮСИК

СКНЮСИК

Лабораторная лабота. Пишется для закрепления навыков программирования после освоения основ работы в графическом режиме.

Задание следующее:

Пишем простенькую компъютерную игру. Каждый уровень игры представляет собой лабиринт из кирпичей. В лабиринте живет главный герой "СКНЮСИК", который управляется от клавиатуры. Кроме скнюсика в лабиринте живут злые "КРАКОЗЯБРЫ", которые гоняются за скнюсиком и мечтают его слопать. Задача скнюсика обмануть кракозябров и выпрыгнуть в дверь. Выход в дверь является переходом на следующий уровеень.

Для облегчения задачи можно сделать только один уровень и в нем только одну кракозябру. Ну а для усложнения можно анимировать персонажей добавить подсчет очков и жизней ну или еще чего-нибудь на собственный вкус.

Начинаем проектирование. Сначала проектируем данные.
В качестве главное игрового поля объявим двумерный массив
M:ARRAY[1..20,1..20]OF BYTE;
Будем считать, что в этом массиве
// В массиве данные:
// 0 - Пусто
// 1 - Скнюсик
// 2 - Дверь
// 3 - Кирпич
// 4 - кракозябра
Все изменения в игре производятся только в этом массиве, после чего текущая обстановка рисуется на экране. Для хранения координат скнюсика заводим две переменные.
X,Y:INTEGER;
Еще две переменные заводим для хранения координат двери (чтобы сравнивать было удобно).
XD,YD:INTEGER;
С кракозябрами сложнее :-) Если вы возметесь за простой вариант то можно завести парочку переменных
Например XК,YК:INTEGER;
Если кракозябров предполагается много, то можно конечно объявить парочку массивов.
Например XК,YК:ARRAY[1..MAX_KRAK]OF INTEGER;
Ну и общее количество кракозябров KOL:INTEGER;
Ну а самое правильное - объявить тип (Например T_KRAK=RECORD) где для каждой кракозябры будут заведены координаты, время срабатывания и еще чего-нибудь :-). А уж потом и массив таких T_KRAKов.
Конечно понадобятся и несколько рабочих переменных, но это уже "По вкусу".

Теперь спроектируем программную часть

Режим графики выберем 16 стандартных цветов.
Для отрисовки спрайтов используем библиотеку "B_SPRITE"
Лабиринты будем задавать в текстовых файлах, которые потом легко читать прямо в массив игрового поля.

В качестве отдельных подпрограмм обязательно нужно реализовать следующие подпрограммы:
PROCEDURE LOAD_DAT(NAM:STRING);// подпрограмма загрузки лабиринта из файла какого скажут.
PROCEDURE RIS;//Подпрограмма отрисовки игрового поля на экран (спрайтами)
PROCEDURE HOD;//Подпрограмма ход человека(скнюсика)
PROCEDURE HOD_K;//Подпрограмма хода кракозябров
Ну а дальше по вкусу :-) Работаем в оболочке "LAZARUS" при создании используется пункт "программа".

Ну вот теперь можно и приступать.
1)Сначала в соответствии с технологией спрайтов рисуйте веселые картинки с кирпичами, скнюсиками, дверями и кракозябрами.
2)При помощи библиотеки и программ из библиотеки B_SPRITE делаем из картинок спрайты.
3)Ну а теперь можно писать....

Желаем вам всяческих успехов. И конечно, если вы хотите чему-то по настоящему научиться, то проект как всегда мы рекомендуем вам реализовать "с нуля" и самостоятельно. А вопросы задавать через систему вопрос-ответ или по почте.



Ну раз вы выполнили работу, можно посмотреть, что у нас получилось.

"это готовая программа" ее можно использовать как игрушку. Правда обычно игрушки так не пишутся, а принимаются специальные меры, чтобы скрыть внутренности (лабиринты и картинки и.т.д.). Но наша программа учебная, и поэтому в ней все специально сделано "напоказ". Но с другой стороны можно самому и картинки поменять и спрайты и лабиринтов добавить.

"Ну а это все исходники и материалы использованные при разработке"


По всем вопросам обращайтесь к администрации "звездного мира" по адресу