Министерство образования и науки Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
«Магнитогорский государственный технический университет им Г.И. Носова»
Кафедра вычислительной техники и прикладной математики
Домашняя работа №2
по дисциплине «Организация ЭВМ» Вариант 3
Выполнил студент группы АВ-08-1: Косолапов И.П.
Проверил: д.т.н. Ячиков И.М.
Магнитогорск 2010г
Содержание
1 Условие задачи 3
2 Постановка задачи 3
3 Инструкция пользователю 3
4 Инструкция для программиста 3
5 Алгоритм программы 4
6 Текст программы 6
Список использованной литературы 12
Условие задачи
Составить игровую программу «ПИТОН». Периодически через равные промежутки времени на игровом поле появляются «кролики» (псевдографические символы). Вы управляете «питоном» клавишами курсора и пытаетесь их «съесть». При этом увеличивается длина питона, и растут ваши очки и т.п. Режим экрана текстовый.
Постановка задачи
Необходимо написать программу, непрерывно отслеживающую нажатия клавиш UP,DOWN,LEFTиRIGHT. При нажатии этих клавиш, направление движения питона должно соответственным образом измениться. При прохождении через кролика длина питона должна увеличиваться. При столкновении головы питона с другой частью его тела игра должна быть окончена.
Инструкция пользователю
Управление питоном осуществляется нажатием клавиш UP,DOWN,LEFTиRIGHT. При съедании кролика, длина питона увеличивается на одну клетку, счет игры увеличивается на единицу. При соприкосновении пиона с самим собой, игра заканчивается. При выходе питона за границы экрана он отображается с другой стороны. При нажатии на клавишуSPACEигра приостанавливается до повторного нажатия этой клавиши. При нажатии на клавишуENTERигра начинается сначала. При нажатии на клавишуESCпроисходит выход из игры. Счет игры отображается в левом нижнем углу экрана.
Инструкция для программиста
В программе использованы следующие переменные:
python |
Массив слов. В каждом слове хранятся координаты клетки, которую занимает питон. В младшем байте хранится абсцисса, в старшем ордината. |
head |
Указатель на голову питона в его теле. |
tail |
Указатель на хвост питона в его теле. |
score |
Количество набранных очков. |
prestep |
Хранится время предыдущей перерисовки питона. |
precr |
Хранится время предыдущего появления кролика. |
delay |
Время задержки движения питона. |
dist |
Интервал появления кроликов. |
key |
Нажатая клавиша. |
dir |
Направление движения. |
crash |
Флаг столкновения. |
pause |
Флаг приостановки игры. |
exit |
Флаг выхода из игры |
reset |
Флаг показывает, что надо начать игру заново. |
В программе использованы следующие процедуры:
main |
Основная процедура, в которой в цикле происходит перерисовка питона, появление кроликов и т.д. |
init |
Инициализация. Присваивает переменным начальные значения, очищает экран, прячет курсор, инициализирует генератор случайных чисел. |
clrscr |
Очистка экрана. |
prtln |
Печать разделительной линии. |
redraw |
Перерисовка питона. Перерисовываются только голова и хвост. |
crdraw |
Перерисовка питона при столкновении. Рисует окровавленную голову. |
topos |
По заданным экранным координатам рассчитывает положение в текстовом видеобуфере. |
crtpyth |
Создает маленького питончика из одной клетки. |
getchar |
Получение кода нажатой клавиши. |
prepare |
Подготовка к перерисовке питона. Анализируется нажатая клавиша. |
step |
Рассчитываются новые координаты питона. |
rndmz |
Инициализируется генератор случайных чисел. |
rnd |
Получение случайных координат. |
rabbit |
Рисует кролика. |
wtstep |
Ожидает, когда будет можно перерисовать питона. |
wtrab |
Ожидает, когда будет можно нарисовать нового кролика. |
info |
Выводит счет игры. |