Разработка программной игры "баскетбол"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
Министерство образования Российской Федерации
КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
Кафедра
КУРСОВАЯ РАБОТА
Красноярск 2002
Содержание
1 Задание к проекту
2 Описание программы
Укрупненный алгоритм
Таблица идентификаторов
Описание процедур и функций
Алгоритм
Контрольные примеры
Текст программы
1 Задание к проекту
Необходимо написать программу - игру баскетбол. Должены быть упрощенно изображены баскетбольный щит и игрок. Необходимо, чтобы можно было изменять положение игрока, направление бросока и его силу.
программа компьютерная игра алгоритм
2 Описание программы
Так как программа использует графический режим, то для ее корректной работы в папке, где находится basket.exe должен находиться и файл egavga.bgi, иначе будет выводиться сообщение об ошибке инициализации графики.
При помощи клавиатуры играющий может перемещать игрока вправо или влево, изменять направление броска.
Управление:
A - движение игрока влево
D - движение игрока вправо
W - увеличение угла броска
S - уменьшение угла броска
SPACE - режим броска, бросок
После нажатия на SPACE включается режим броска. В левом верхнем углу экрана появится прямоугольник, показывающий силу броска. Сила броска будет циклически изменяться от 0 до максимума. Чем больше высота прямоугольника, тем сильнее получится бросок. Максимальная сила отмечена чертой. Для совершения броска необходимо в нужный момент еще раз нажать SPACE. Затем можно увидеть полет мяча. Только после этого режим броска выключается.
В этом режиме нельзя передвигать игрока или изменять направление броска.
3 Укрупненный алгоритм
Таблица идентификаторов
Имя переменнойТипНазначениеgrdriverintegerСлужебные переменные для включения и настройки графического режимаgrmodeintegererrcodeintegerxintegerПоложение игрокаxprevintegerПредыдущее положение игрокаstepintegerШаг игрокаradiusintegerРадиус мячаhandxintegerКоордината мяча и руки по оси xhandyintegerКоордината мяча и руки по оси yvintegerСкорость мячаdelay1integerЗадержкаchangeintegerБыла ли нажата клавишаangleReal Направление руки (броска)angleprevRealПредыдущее Направление руки anglestepRealИзменение направления рукиkeyCharВведенная клавишаycrealКоордината мяча по оси yiintegerСчетчикdirectionintegerНаправление полета мячаhandintegerВременная переменнаяgoalintegerБыл ли голyrealКоордината мяча по оси yyprealПредыдущая координата мяча по оси yvxrealСкокость мяча по оси xvyrealСкокость мяча по оси ydistancerealРасстояние от мяча до угла кольцаkrealБыл ли удар мяча об кольцоk1realВременные переменныеtmpRealtmp1Realtmp2Real
5 Описание процедур и функций
Процедура showbasket - Процедура, рисующая баскетбольный щит.
Функция findy(x:real;y:real;vx:real;vy:real):real - Функция нахождения координаты мяча по оси y.
Процедура showplayer(x:integer;angle:real) - Процедура, рисующая игрока.
Процедра shot(x:integer;angle:real) - Процедура "Бросок мяча".
6 Алгоритм
Программа basketball
Подключение библиотек crt,graph
Переменные:
grdriver,grmode,errcode,x,xprev,step,radius:integer
handx,handy,v,delay1,change:integer
angle,angleprev,anglestep:real
key:char
процедура showbasket
начало
переместить перо в (130,100)
провести линию в(135,100)
провести линию в(135,230)
провести линию в(130,230)
провести линию в(130,100)
переместить перо в (130,150)
провести линию в(85,175)
провести линию в(35,250)
провести линию в(5,460)
провести линию в(60,280)
провести линию в(85,175)
переместить перо в (130,190)
провести линию в(90,215)
провести линию в(60,280)
провести линию в(65,460)
провести линию в(35,250)
провести линию в(90,215)
провести линию в(85,175)
провести линию в(130,190)
провести линию из (0,460) в (639,460)
переместить перо в (135,190)
провести линию в(185,190)
провести линию в(185,192)
провести линию в(135,192)
конец
функция вызов findy(x:realy:realvx:realvy:real):real
Переменные yc:real
начало
yc=y-vy/sqrt(v*v+0.0001)
возврат yc из функции
конец
процедура showplayer(x:integerangle:real)
начало
нарисовать эллипс (x,350,0,360,23,40)
провести линию из (x-10,385) в (x-20,459)
провести линию из (x+10,385) в (x+20,459)
нарисовать окружность в точке (x,297) с радиусом 13
handx=x-округление(60*cos(angle))
handy=297+округление(60*sin(angle))
провести линию из (x,330) в (handx,handy)
конец
процедура shot(x:integerangle:real)
Переменные,direction,hand,goal:integer
y,yp,vx,vy,distance,k,k1,tmp,tmp1,tmp2:real
начало
goal=0
i=1
v=0
hand=handx
yp=handy
Закрасить прямоугольник (550,20,600,40) черным
пока не нажата клавиша делать
начало
если v<50 то v=v+1
иначе v=0
провести линию из (10,100) в (20,100)
Закрасить прямоугольник (10,50,20,50+v) белым
Задержка(delay1*10)
Закрасить прямоугольник (10,50,20,50+v) черным
Конец
цвет пера - черный
нарисовать окружность в точке(hand,округление(yp))
с радиусом radius
цвет пера - белый
vy=-модуль(v)*синус(angle)*7
vx=v*косинус(angle)
yp=вызов findy(handx,yp,vx,vy)
direction=1
k1=0
для i от 0 до 800 делать
начало
tmp=hand