Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
ФГБОУ ВПО
«Магнитогорский Государственный Технический Университет им Г.И. Носова»
Кафедра Вычислительной Техники и Прикладной Математики
Домашняя работа №2: «Разработка и отладка программ на языке Assembler»
Дисциплина: «Организация ЭВМ»
Вариант № 8
Выполнила: студентка группы АВ-10
Барханова Э.Р.
Проверил: Ячиков И.М.
Магнитогорск 2013
Условие задачи
Составить игровую программу «ПОГОНЯ» в которой «заяц» постоянно убегает от «волка» в пространстве ограниченном стенками. Скорость «зайца» постоянна, но направление меняется с учетом направления «хищника». Вы управляете естественно «волком» и Ваша задача поймать зайца за более короткое время.
Примечание: Лучше использовать графический видеорежим, например 12h, но допустим и текстовый режим с псевдографикой.
Постановка задачи
Необходимо составить программу, которая будет непрерывно отслеживать нажатие на клавиатуре некоторых клавиш:
«вверх» – перемещение волка вверх;
«вниз» – перемещение волка вниз;
«вправо» – перемещение волка вправо;
«влево» – перемещение волка влево;
Управление волком происходит сразу после нажатия клавиши направления. Заяц начинает «убегать» от волка в сторону левой стены, а затем бежит к противоположному от волка углу. Как только появляется возможность, он «удирает» от волка в противоположную сторону. Идет отсчет времени и, как только волк «поймал» свою жертву, игра заканчивается.
Инструкция пользователю
При запуске программы появляется окно. В этом окне есть несколько областей, разделенных при помощи линии: область над линией – поле игры, область под линией – время от начала игры.
Игра происходит в клавиатурном режиме при помощи нажатия клавиш «вверх», «вниз», «вправо», «влево».
Волк обозначен квадратом синего цвета, заяц – белого. Когда погоня завершена, появляется красный квадратик. Заяц начинает движения сразу после начала движения волка. Как только хищник оказывается рядом с жертвой (на соседней клетке), то это означает окончание погони (т.е. волк догнал зайца) и конец игры.
Инструкция программисту
В программе используются следующие переменные, указанные в таблице 1.
Таблица 1 – Переменные
krol |
Координаты зайца |
wolf |
Координаты волка |
step |
Флаг, указывающий, что сделан ход |
exit |
Флаг конца игры |
time |
Для хранения времени |
|
|
В программе задействуются процедуры, указанные в таблице 2.
Таблица 2 – Процедуры
main |
Главная процедура, которая запускает остальные процедуры, проверяет нажатую клавишу и т.д. |
init |
Инициализация данных, прорисовка разделительной линии, очистка экрана, сохранение времени |
setscreen |
Очистка экрана от «лишнего» |
liner |
Разметка разделительной линии |
draw |
Рисовка символа, координаты которого передаются в bx, атрибуты в ax Окончание таблицы 2 |
drawkrolik |
Рисовка «живого» кролика (белый квадратик) |
drawdeadkrol |
Рисовка «мертвого» кролика (красный квадратик) |
drawwolf |
Рисовка вога (синий квадратик) |
clear |
Очистка экрана |
clearkrol |
Очистка клетки с кроликом |
clearwolf |
Очистка клетки с волком |
trans |
Расчет положение в текстовом видеобуфере по заданным экранным координатам |
getchar |
Получение кода нажатой клавиши |
prepare |
Анализ нажатой клавиши |
wolf_hod |
Ход волка, т.е. расчет его новых координат |
krol_hod |
Ход зайца, т.е. расчет его новых координат |
getdist |
Расстояние между позицией волка и предполагаемой позицией зайца |
info |
Вывод времени игры |
extest |
Проверка на соседство зайца и волка |