Министерство образования и науки Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
«Магнитогорский государственный технический университет им Г.И. Носова»
Кафедра вычислительной техники и прикладной математики
Домашняя работа №2
по дисциплине «Организация ЭВМ» Вариант 8
Выполнил студент группы АВ-08-1: Лебедева С.И.
Проверил: д.т.н. Ячиков И.М.
Магнитогорск 2010г
Содержание
1 Условие задачи 3
2 Постановка задачи 3
3 Инструкция пользователю 3
4 Инструкция для программиста 3
5 Алгоритм программы 4
6 Текст программы 5
Список использованной литературы 16
Условие задачи
Составить игровую программу «ПОГОНЯ» в которой «заяц» постоянно убегает от «волка» в пространстве ограниченном стенками. Скорость «зайца» постоянна, но направление меняется с учетом направления «хищника». Вы управляете естественно «волком» и Ваша задача поймать зайца за более короткое время.
Примечание: Лучше использовать графический видеорежим, например 12h, но допустим и текстовый режим с псевдографикой.
Постановка задачи
Необходимо написать программу, непрерывно отслеживающую нажатия клавиш UP,DOWN,LEFTиRIGHT. При нажатии этих клавиш, направление движения волка должно соответственным образом измениться, при этом движения зайца должны быть направлены в сторону противоположную стороне питона. Ни волк ни заяц не могут выходить за пределы поля. В случае когда волк переходит на соседнюю с зайцем клетку игра должна быть окончена.
Инструкция пользователю
Управление волком осуществляется нажатием клавиш UP,DOWN,LEFTиRIGHT. При передвижении волка на 1 клетку, заяц так же передвигается на 1 клетку в сторону , противоположную стороне волка. Игра заканчивается когда волк встанет на соседнюю с зайцем клетку.
Инструкция для программиста
В программе использованы следующие переменные:
hare |
Координаты зайца |
wolf |
Координаты волка |
time |
Хранит в себе время запуска программы |
step |
Флаг, указывающий на то, что будет сделан ход. |
gmover |
Флаг конца игры. |
В программе использованы следующие процедуры:
main |
Основная процедура, в которой в цикле происходит проверка нажатой клавиши, перерисовка волка и зайца и т.д. |
init |
Инициализация. Присваивает переменным начальные значения, очищает экран, прячет курсор, сохроняет время запуска программы. |
clrscr |
Очистка экрана. |
prtln |
Печать разделительной линии. |
draw |
Процедура которая рисует симвл, координаты которого передаются в bx, атрибуты в ax. |
drlfhr |
Рисует живого зайца. |
drddhr |
Рисует мёртвого зайца. |
drwolf |
Рисует волка. |
clear |
Отчищает клетку от ранее нарисованного на ней символа |
clhare clwolf |
Отчищает клетку зайца. Отчищает клетку волка. |
topos |
По заданным экранным координатам рассчитывает положение в текстовом видеобуфере. |
getchar |
Получение кода нажатой клавиши. |
prepare |
Анализируется нажатая клавиша. |
wolfst |
Рассчитываются новые координаты волка и рисуем его. |
harest |
Рассчитываются новые координаты зайца и рисуем его. |
getdist |
Определение расстояния между позицией волка и предполагаемой позицией зайца. |
info |
Вывод времени работы программы. |
extest |
Проверка на соседство зайца и волка. |
Алгоритм программы
В начале работы программы происходит инициализация переменных, очистка экрана, проводится линия, делящая экран на игровую область и область для отображения игрового времени, сохраняется текущее. Далее происходит получение кода нажатой клавиши и если эта клавиша влияет на работу программы, выполняется соответствующее ей действие. Если была нажата какая-либо из клавиш UP,DOWN,LEFTилиRIGHT, будет соответственно изменено положение волка. После чего для зайца проверяются все варианты хода, при которых расстояние между ним и волком не уменьшилось бы. Если заяц находится на соседний с волком клетке то волк съедает зайца и игра заканчивается.
На рисунке 1 приведена блок-схема работы программы.
Рисунок 1 – Блок схема работы программы