Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
ФГБОУ ВПО
«Магнитогорский Государственный Технический Университет им Г.И. Носова»
Кафедра Вычислительной Техники и Прикладной Математики
Домашняя работа №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  | 
			 Проверка на соседство зайца и волка  | 
