Реферат: Разработка игровой программы

Реферат: Разработка игровой программы




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































МИНИСТЕРСТВО
ОБРАЗОВАНИЯ
РОСИЙСКОЙ
ФЕДЕРАЦИИ

Таганрогский
государственный
радиотехнический
университет
Задание
выполнил
________________ _____________________


подпись
студента
дата
выполнения
задания

Задание
проверил
________________ _____________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________
Необходимо
разработать
игровую программу
«Арканоид».
Дощечки для
отбивания
шарика надо
разместить
слева и справа.
Правая дощечка
должна управляться
клавишами «A»
и «Z»
(вверх и
вниз соответственно),
а правая дощечка
должна управляться
клавишами «L»
и «<» (вверх
и вниз соответственно).
Так же должен
быть предусмотрен
режим игры за
компьютер
(автоматическое
отбивание
дощечками
шарика). По нажатию
клавиши «1» -
включение/выключение
игры за компьютер
левой дощечки,
по нажатию
клавиши «2» -
включение/выключение
игры за компьютер
правой дощечки.
Программа
должна иметь
дружественный
интерфейс,
работать на
компьютере
с процессором
486DX-66.
1. Управление
дощечками
пользователем.
2.
Положение
дощечек при
приближении
шарика к краям
экрана.
Перемещение
дощечки по
экрану при
нажатии определенных
клавиш.
Отталкивание/непопадание
шарика от дощечки.
Звуковое
сопровождение
при попадании
или непопадании
шарика по дощечке,
или отскакивания
его от стенки.
CK,
StopRun, Up1, Down1, Up2, Down2, Auto1, Auto2 :Boolean;
R1,
R2, oR1, oR2, BX, BY, oBX, oBY, Step :Integer;
{____________________________________________________________________________}
{работа
с клавиатурой
по превываниям}
$1E:
begin CK:=True; Up1:=True; end; {вверх
первая дощечка}
$9E:
begin CK:=True; Up1:=False; end;
$2C:
begin CK:=True; Down1:=True; end; {вниз
первая дощечка}
$AC:
begin CK:=True; Down1:=False; end;
$25:
begin CK:=True; Up2:=True; end; {вверх
вторая дощечка}
$A5:
begin CK:=True; Up2:=False; end;
$32:
begin CK:=True; Down2:=True; end; {вниз
вторая дощечка}
$B2:
begin CK:=True; Down2:=False; end;
$02:
Auto1:=not Auto1; {включение/выключение
авто-режима}
$03:
Auto2:=not Auto2; {включение/выключение
авто-режима}
Inline
($E4/$61/$8A/$E0/$0C/$80/ {вставка
в машинных
кодах}

$E6/$61/$86/$E0/$E6/$61/
{для правильной
работы}

$B0/$20/$E6/$20);
{обработчика
прерывания}
{----------------------------------------------------------------------------}
{процедура
установки
пользовательского
прерывания}

GetIntVec($09,@OldInt9);
{сохранение
старого вектора}

SetIntVec($09,Addr(UserInt9));
{установка
нового}
{----------------------------------------------------------------------------}
{----------------------------------------------------------------------------}
{процедура
инициализации
графического
режима}
InitGraph(GrDriver,
GrMode, GrPath);
{----------------------------------------------------------------------------}
{процедура
обновления
количества
очков игроков}
{----------------------------------------------------------------------------}
{если
нажата клавиша
вверх и не нажата
клавиша вниз}
if
R1<50 then R1:=50; {не пропускать
выше положенной}
{если
нажата клавиша
вниз и не нажата
клавиша вверх}
if
R1>430 then R1:=430;{не пропускать
ниже положенной}
{если
нажата клавиша
вверх и не нажата
клавиша вниз}
if
R2<50 then R2:=50; {не пропускать
выше положенной}
{если
нажата клавиша
вниз и не нажата
клавиша вверх}
if
R2>430 then R2:=430;{не пропускать
ниже положенной}
{если
включен автоматический
режим для игрока
1}
begin
{автоматическое
перемещение
дощечки}
if
R1<50 then R1:=50;{не пропускать
выше положенной}
if
R1>430 then R1:=430;{не пропускать
ниже положенной}
{если
включен автоматический
режим для игрока
2}
begin
{автоматическое
перемещение
дощечки}
if
R2<50 then R2:=50;{не пропускать
выше положенной}
if
R2>430 then R2:=430;{не пропускать
ниже положенной}
{столкновение
шарика с дощечкой
слева}
if
(BX<60) and (BY>(R1-55)) and (BY<(R1+55)) then
{столкновение
шарика с дощечкой
справа}
if
(BX>580) and (BY>(R2-55)) and (BY<(R2+55)) then
{удар
шарика об верхнюю
или нижнюю
стенку}
if
(BY<10) or (BY>470) then kY:=-kY;
until
StopRun; {выход если
нажата клавиша
Esc}
{============================================================================}
InitScreen;
{инициализация
графического
режима}
SetUserInt;
{установка
пользовательского
прерывания}
Game;
{непосредственно
вызов игры}
SetOldInt;
{восстановления
старого вектора
прерывания}
CloseGraph;
{закрытие
графического
режима}

МИНИСТЕРСТВО
ОБРАЗОВАНИЯ
РОСИЙСКОЙ
ФЕДЕРАЦИИ

Таганрогский
государственный
радиотехнический
университет
Задание
выполнил
________________ _____________________


подпись
студента
дата
выполнения
задания

Задание
проверил
________________ _____________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

Описание программы
созданной с
помощью Turbo
Visual.
Начинается
программа с
подключения
библиотек Turbo
Visual:
uses App,
Objects, Menus, Drivers, Editors, Views;
Основной
блок программы
состоит из трех
команд:

MyApp.Init; {Подготовить
работу программы}

MyApp.Run; {Выполнить
необходимые
действия}

MyApp.Done; {Завершить
исполнение
программы}
Для
создания собственной
строки статуса
вводим следующее
описание:

TMyApp=object(TApplication) {Создаем
объект-потомок
от TApplication}

procedure InitStatusLine; virtual;
{Перекрываем
старый метод
InitStatusLine новым}

Описание нового
метода, с помощью
которого создается
строка статуса:

Var R:TRect; {хранит границы
строки статуса}

GetExtent(R); {устанавливает
R в координаты
всего экрана}

R.A.Y:=R.B.Y-1; {передвигает
вершину выше
нижней на 1 строку}

StatusLine:=New(PStatusLine, Init(R, {создает
строку статуса}

NewStatusDef(0,$FFFF, {устанавливает
диапазон контекстного
Help}

NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit, {определяет
элемент}

NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose, {другой}
TMyApp=object(TApplication)
{Создаем
объект-потомок
от TApplication}

procedure InitMenuBar; virtual; {Перекрываем
старый метод
InitMenuBar новым}

GetExtent(R); {устанавливает
R в координаты
всего экрана}

MenuBar:=New(PMenuBar, Init(R, NewMenu( {создать
полосу меню}

NewSubMenu('~F~ile', hcNoContext, NewMenu( {определить
меню}

StdFileMenuItems(nil)), {стандратная
функция определения
элементов}

NewSubMenu('~W~indow', hcNoContext, NewMenu( {определить
меню}

StdWindowMenuItems(nil)), {стандратная
функция определения
элементов}

procedure HandleEvent(var Event:TEvent); virtual;

PDemoWindow=^TDemoWindow; {тип указателя
для нового
объектного
типа}

TDemoWindow=object(TWindow) {определение
нового типа
окна}

constructor Init(Bounds: TRect; WinTitle:String; WindowNo:
Integer);

constructor Init(var Bounds:TRect; HS, VS: PScrollBar);

procedure HandleEvent(var Event:TEvent); virtual;

Описание тела
конструктора
инициализации
окна:

constructor TDemoWindow.Init(Bounds: TRect; WinTitle:String;
WindowNo: Integer);

Str(WindowNo,S); {устанавливает
номер окна в
заколовке}

TWindow.Init(Bounds, WinTitle+' '+S, wnNoNumber);

Bounds.Grow(-1,-1); {интерьер
помещается
внутри рамки
окна}

VS:=StandardScrollBar(sbVertical+sbHandleKeyBoard); {разрешение
перемещения
вертикального
бегунка стрелками
на клавиатуре}

HS:=StandardScrollBar(sbHorizontal+sbHandleKeyBoard);
{разрешение
перемещения
горизонтального
бегунка стрелками
на клавиатуре}

Interior:=New(PInterior, Init(Bounds, HS, VS));

Insert(Interior); {добавляет
интерьер к
окну}

Описание конструктора
инициализации
интерьера:

constructor TInterior.Init(var Bounds:TRect; HS, VS: PScrollBar);

Описание процедуры
прорисовки
интерьера окна:

TScroller.Draw; {Вызов
стандартной
прорисовки}

WriteStr(0,0,'Текст в
окне',1); {Вывод
текста в окно}

TScroller.ShowCursor; {Показать
курсор}

Описание тела
процедуры
создания нового
окна:

R.Assign(0,0,26,7); {установка
начального
размера и позиции}

R.Move(Random(58),Random(16)); {случайное
перемещение
по экрану}

Window:=New(PDemoWindow, Init(R, 'Demo Window', WinCount));

DeskTop^.Insert(Window); {вывести
окно на панель
экрана}
Описание
тела процедуры
обработки
команд среды
procedure
TMyApp.HandleEvent(var Event:TEvent);
TApplication.HandleEvent(Event);
{действует как
предок}
case
Event.Command of {но откликается
на дополнительные
команды}
cmNew:
NewWindow; {определяет
действие для
команды cmNew}

ClearEvent(Event); {очищает
событие после
обработки}
Описание
тела процедуры
обработки
команд в окне
procedure
TInterior.HandleEvent(var Event:TEvent);
TScroller.HandleEvent(Event);
{действует как
предок}
case
Event.What of {проверка
события}

Case
Event.KeyCode of {проверка:
какая клавиша
нажата}

if
x>0 then {если
координата
по Х больше 0}

SetCursor(x,y);
{установить
на новую координату
курсор}

x:=x+1;
{увеличить
координату
по Х на единицу}

SetCursor(x,y);
{установить
на новую координату
курсор}

if
y>0 then {если
координата
по Y
больше 0}

SetCursor(x,y);
{установить
на новую координату
курсор}

y:=y+1;
{увеличить
координату
по Y
на 1}

SetCursor(x,y);
{установить
на новую координату
курсор}
Case
Event.ScanCode of {проверка
скан-кода клавиатуры}

If
GetState(sfCursorVis) Then {если
курсор виден}

TScroller.ShowCursor;
{иначе
показать его}

Описание игровой
программы
«Стрельба по
мишени».
Игровая
программа
состоит из трех
процедур (minv —
уменьшение
кол-ва патронов,
intro — заставка,
go — конец игры)
и основного
блока программы.
Процедура
minv (уменьшение
количества
патронов).
kv:=kv-1;
{уменьшение
значение переменной
kv (в основной
программе она
фигурирует
как количество
патронов)
}
setfillstyle(1,9);
{установка
стиля заполнения
фона}
bar((20-kv)*10+415,4,(20-kv)*10+425,12);
{стирание
одного патрона
с экрана}
settextstyle(0,0,15);
{установка
стиля текста}
outtextxy(140,100,'ТИР');
{вывод
текста}
outtextxy(220,290,'Выход
из программы');
tp:='НАЖМИТЕ
ЛЮБУЮ КНОПКУ
ДЛЯ НАЧАЛА
ИГРЫ';
outtextxy(320-trunc(length(tp)*4),340,tp);
{вывод текста
с расчетом по
центру}
if
ord(a)=27 then exi:=true; {если
нажата клавиша
Esc – выйти
из игры}
Процедура
go – выводит
заставку конца
игры
settextstyle(0,0,5);
{установка
стиля вывода
текста}
outtextxy(50,200,'ВСЕ,ДОИГРАЛИСЬ');
d:=vga;initgraph(d,r,'');
{инициализация
графики}
setgraphmode(2);
{установка
графического
режима}
randomize;
{вызов
генератора
случайных
чисел}
urov:=1;oko:=0;
mus:=true; sou:=true;menu:=true; {первоначальная
установка
переменных}
repeat
{начало
основного цикла
программы}
setfillstyle(1,1);
{установка
стиля заполнения
фона}
bar(0,0,640,2);
{рисование
прямоугольников
вокруг рабочей
области}
setcolor(14);
{установка
цвета рисования}
moveto(7,460);
{перемещение
графического
курсора в указанные
координаты}
for
i:=1 to 62 do {рисование
песка холмиками}
floodfill(9,469,14);
{заполнение
стилем области,
расположенной
либо внутри
замкнутого
контура, либо
вне его}
setlinestyle(0,0,1);
{установка
стиля линий}
setfillstyle(8,6);
{установка
стиля заполнения
фона}
fillellipse(320,408,23,15);
{вычерчивание
контура эллипса
текущим цветом
и заполнение
ограниченной
контуром области
экрана текущим
узором}
for
i:=1 to kv do fillellipse(i*10+420,8,3,3); {рисование
патронов}
if
menu then intro; {если
menu=true,
то
вызвать процедуру
intro
(заставка
игры)}
if
exi then goto 1; {если
exi=true
(выход), то перейти
на метку 1}
outtextxy(270,200,concat('УРОВЕНЬ
',em)); {вывод
текста с помощью
процедуры
конкатенации}
outtextxy(190,240,concat('Наберите
',em,' очков'));
until
ord(a)=13; {выход
из цикла по
клавише Enter}
gettime(q1,min,sec,q2);
{получение
системного
времени}
if
mk>=60 then begin {если
количество
минут больше
60,}
hk:=q1+1;
{то
количество
часов увеличить
на 1}
gettime(q1,min,sec,q2);
{получение
системного
времени}
setfillstyle(1,1);
{установка
стиля заполнения}
setcolor(4);
{установка
цвета рисования}
if
mk=min then rk:=60-abs(sk-sec) else rk:=abs(sk-sec);

gettime(q1,min,sec,q2);
{получение
системного
времени}
if
a=chr(77) then begin fi:=fi-0.05; ok:=true; end; {Поворот
дула влево}
if
a=chr(75) then begin fi:=fi+0.05; ok:=true; end; {Повоорт
дула вправо}
if
ord(a)=27 then menu:=true; {Выход в
меню}
if
(not(fire.v)) and (not(ok)) then begin

if sou then
sound(random(200)+100);delay(1);
if
(kv=0) and (not(fire.v)) then ex:=ex+1;
if
fire.v then begin {Полет
снаряда}

bar(fire.xs-4,fire.ys-4,fire.xs+4,fire.ys+4);

bar(fire.xs-4,fire.ys-4,fire.xs+4,fire.ys+4);
if
(fire.xs+4>=xm) and (fire.xs-4<=xm+mi)

and (fire.ys+4>=ym) and
(fire.ys-4<=ym+mi)

bar(fire.xs-4,fire.ys-4,fire.xs+4,fire.ys+4);
if
(min>=tpm) and (sec>=tps) and not(mn) then begin
if
(min>=tzm) and (sec>=tzs) then begin

bar(xm,ym,xm+mi,ym+mi);xm:=-1300;ym:=-1300;
until
(ord(a)=27) or (ex=1) or ((mk=min) and (sec>=sk));
1:
closegraph; {закрытие
графического
режима}

Название: Разработка игровой программы
Раздел: Рефераты по информатике, программированию
Тип: реферат
Добавлен 02:12:18 16 августа 2005 Похожие работы
Просмотров: 77
Комментариев: 16
Оценило: 4 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Если Вам нужна помощь с учебными работами, ну или будет нужна в будущем (курсовая, дипломная, отчет по практике, контрольная, РГР, решение задач, онлайн-помощь на экзамене или "любая другая" учебная работа...) - обращайтесь: https://clck.ru/P8YFs - (просто скопируйте этот адрес и вставьте в браузер) Сделаем все качественно и в самые короткие сроки + бесплатные доработки до самой сдачи/защиты! Предоставим все необходимые гарантии.
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Реферат: Разработка игровой программы
Курсовая работа: Учет движения основных средств 3
Фипи Контрольные Работы 9 Класс Обществознание
Реферат: В. Распутин "Пожар". Скачать бесплатно и без регистрации
Внедрение Crm Системы На Предприятии Курсовая
Реферат: Лекарственные растения
Социальные конфликты
Контрольная Работа Мониторинг Лесных Земель 4 Курс
Реферат по теме Что такое идеальное? Проблема идеального
Реферат: Развитие учебного процесса в школе может осуществляться двумя путями: медленным совершенствованием его отдельных частей или кардинальным изменением с реализаци
Дипломная работа по теме Разработка паспорта подготовки горных пород к выемке, выемочно-погрузочных работ и отвалообразования
Публикации Для Защиты Докторской Диссертации
Курсовая работа по теме Диагностика травм позвоночника и спинного мозга
Курсовая работа: Сущность, факторы, типы и модели экономического роста
Шпаргалка: Нейтронно-активационный каротаж. Скачать бесплатно и без регистрации
Сочинение Мое Отношение К Чичикову
Управление Функции Управления Реферат
Курсовая работа по теме Проектирование информационной системы на основе объектно-ориентированного подхода средствами языка моделирования UML
Сочинение Про Мою Семью 2 Класс
Контрольная работа: Составление стоимостного межотраслевого баланса
Реферат по теме Мастит
Реферат: Особенности правового развития лизинга в России
Реферат: Экстринсивная и интринсивная мотивация
Ошибка при установлении защищённого соединения

Report Page