Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

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

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

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

Таганрогский государственный радиотехнический университет

Кафедра вычислительной техники
_____________________________________________________________________

Дистанционное обучение

2000 – 2001 учебный год

КУРСОВАЯ РАБОТА

по курсу

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ


Студента группы ВД – 49


Каретина Флориана Викторовича


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

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


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

оценка подпись преподавателя


_______________________

дата проверки задания


Рецензия преподавателя

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________


ОГЛАВЛЕНИЕ

1. Постановка задачи 3 стр.

2. Входные данные 3 стр.

3. Выходные данные 3 стр.

4. Текст программы 4 стр.


1. Постановка задачи.


Необходимо разработать игровую программу «Арканоид». Дощечки для отбивания шарика надо разместить слева и справа. Правая дощечка должна управляться клавишами «A» и «Z» (вверх и вниз соответственно), а правая дощечка должна управляться клавишами «L» и «<» (вверх и вниз соответственно). Так же должен быть предусмотрен режим игры за компьютер (автоматическое отбивание дощечками шарика). По нажатию клавиши «1» - включение/выключение игры за компьютер левой дощечки, по нажатию клавиши «2» - включение/выключение игры за компьютер правой дощечки. Программа должна иметь дружественный интерфейс, работать на компьютере с процессором 486DX-66.


2. Входные данные.

1. Управление дощечками пользователем.

2. Положение дощечек при приближении шарика к краям экрана.


3. Выходные данные.

  1. Перемещение дощечки по экрану при нажатии определенных клавиш.

  2. Отталкивание/непопадание шарика от дощечки.

  3. Выдача очков играющих.

  4. Звуковое сопровождение при попадании или непопадании шарика по дощечке, или отскакивания его от стенки.


Текст программы

program Game_Tenis;

uses DOS, Crt2, Graph;

var

CK, StopRun, Up1, Down1, Up2, Down2, Auto1, Auto2 :Boolean;

R1, R2, oR1, oR2, BX, BY, oBX, oBY, Step :Integer;

kX, kY, rBX, rBY :Real;

MissCount1, MissCount2 :Word;

OldInt9: procedure;

{____________________________________________________________________________}

{работа с клавиатурой по превываниям}

procedure UserInt9; interrupt;

begin

case Port[$60] of

$81: StopRun:=True; {Esc - выход}

$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; {включение/выключение авто-режима}

{для игрока 1}

$03: Auto2:=not Auto2; {включение/выключение авто-режима}

{для игрока 2}

end;


Inline ($E4/$61/$8A/$E0/$0C/$80/ {вставка в машинных кодах}

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

$B0/$20/$E6/$20); {обработчика прерывания}

end;

{----------------------------------------------------------------------------}

{процедура установки пользовательского прерывания}

procedure SetUserInt;

begin

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

SetIntVec($09,Addr(UserInt9)); {установка нового}

end;

{----------------------------------------------------------------------------}

{восстановление старого вектора}

procedure SetOldInt;

begin

SetIntVec($09,@OldInt9);

end;

{----------------------------------------------------------------------------}

{процедура инициализации графического режима}

procedure InitScreen;

var

GrMode, GrDriver :Integer;

GrPath :String;

begin

GrDriver:=VGA;

GrMode:=VGAHi;

GrPath:='E:\pl\bp\bgi';

InitGraph(GrDriver, GrMode, GrPath);

SetTextStyle(2, 0, 6);

end;

{----------------------------------------------------------------------------}

{процедура обновления количества очков игроков}

procedure RefrCount;

var

s1 :String;

begin

SetFillStyle(1,0);


Bar(610, 230, 639, 250);

Str(MissCount1, s1);

OutTextXY(614,232, s1);

Bar(0, 0, 29, 479);

Str(MissCount2, s1);

OutTextXY(5,232, s1);


Bar(0, 230, 29, 250);

Str(MissCount2, s1);

OutTextXY(4,232, s1);

Bar(610, 0, 639, 479);

Str(MissCount1, s1);

OutTextXY(615,232, s1);

end;

{----------------------------------------------------------------------------}

procedure Game;

var

t1 :Integer;

ChC :Boolean;

begin

{прорисовка игрового поля}

SetColor(12);

Rectangle(30,0, 609, 479);

SetFillStyle(1, 1);

Bar(31,1, 608, 478);

{первоначальная установка переменых}

kX:=0.8;

kY:=0.3;

Step:=10;

rBX:=320;

rBY:=240;

oBX:=320;

oBY:=240;

R1:=240;

R2:=240;

oR1:=240;

oR2:=240;


repeat

{если нажата клавиша вверх и не нажата клавиша вниз}

{для игрока 1}

if Up1 and not Down1 then

begin {перемещение дощечки вверх}

R1:=R1-10;

if R1<50 then R1:=50; {не пропускать выше положенной}

SetColor(1); {координаты}

Line(50, oR1-48, 50, oR1+48);

SetColor(11);

Line(50, R1-48, 50, R1+48);

oR1:=R1;

end;

{если нажата клавиша вниз и не нажата клавиша вверх}

{для игрока 1}

if Down1 and not Up1 then

begin {перемещение дощечки вниз}

R1:=R1+10;

if R1>430 then R1:=430;{не пропускать ниже положенной}

SetColor(1); {координаты}

Line(50, oR1-48, 50, oR1+48);

SetColor(11);

Line(50, R1-48, 50, R1+48);

oR1:=R1;

end;

{если нажата клавиша вверх и не нажата клавиша вниз}

{для игрока 2}

if Up2 and not Down2 then

begin {перемещение дощечки вверх}

R2:=R2-10;

if R2<50 then R2:=50; {не пропускать выше положенной}

SetColor(1); {координаты}

Line(590, oR2-48, 590, oR2+48);

SetColor(10);

Line(590, R2-48, 590, R2+48);

oR2:=R2;

end;

{если нажата клавиша вниз и не нажата клавиша вверх}

{для игрока 2}

if Down2 and not Up2 then

begin {перемещение дощечки вниз}

R2:=R2+10;

if R2>430 then R2:=430;{не пропускать ниже положенной}

SetColor(1); {координаты}

Line(590, oR2-48, 590, oR2+48);

SetColor(10);

Line(590, R2-48, 590, R2+48);

oR2:=R2;

end;

{если включен автоматический режим для игрока 1}

if Auto1 then

begin {автоматическое перемещение дощечки}

R1:=BY;

if R1<50 then R1:=50;{не пропускать выше положенной}

{координаты}

if R1>430 then R1:=430;{не пропускать ниже положенной}

{координаты}

SetColor(1);

Line(50, oR1-48, 50, oR1+48);

oR1:=R1;

end;

SetColor(11);

Line(50, R1-48, 50, R1+48);

{если включен автоматический режим для игрока 2}

if Auto2 then

begin {автоматическое перемещение дощечки}

R2:=BY;

if R2<50 then R2:=50;{не пропускать выше положенной}

{координаты}

if R2>430 then R2:=430;{не пропускать ниже положенной}

{координаты}

SetColor(1);

Line(590, oR2-48, 590, oR2+48);

oR2:=R2;

end;

{перерисовка полета шарика}

SetColor(10);

Line(590, R2-48, 590, R2+48);


SetColor(12);

Rectangle(30,0, 609,479);


SetFillStyle(1, 1);

SetColor(1);

FillEllipse(oBX, oBY, 10, 10);


rBX:=rBX+kX*Step;

rBY:=rBY+kY*Step;

BX:=Round(rBX);

BY:=Round(rBY);

SetFillStyle(1, 15);

SetColor(7);

FillEllipse(BX, BY, 10, 10);

{если дощечка не попала}

if ChC then

begin

ChC:=False;

RefrCount; {обновить очки игроков}

end;

{столкновение шарика с дощечкой слева}

if (BX<60) and (BY>(R1-55)) and (BY<(R1+55)) then

begin

kX:=-kX;

Sound(1000);

Delay(10);

NoSound;

end;

{не попадание дощечкой слева}

if (BX<40) then

begin

rBX:=580;

rBY:=R2;

kX:=Abs(kX);

Sound(700);

Delay(500);

NoSound;

Inc(MissCount1);

ChC:=True;

end;

{столкновение шарика с дощечкой справа}

if (BX>580) and (BY>(R2-55)) and (BY<(R2+55)) then

begin

kX:=-kX;

Sound(1000);

Delay(10);

NoSound;

end;

{не попадание дощечкой справа}

if (BX>600) then

begin

rBX:=60;

rBY:=R1;

kX:=-Abs(kX);

Sound(700);

Delay(500);

NoSound;

Inc(MissCount2);

ChC:=True;

end;

{удар шарика об верхнюю или нижнюю стенку}

if (BY<10) or (BY>470) then kY:=-kY;

oBX:=BX;

oBY:=BY;


Delay(10);

until StopRun; {выход если нажата клавиша Esc}


end;

{============================================================================}

begin

InitScreen; {инициализация графического режима}

SetUserInt; {установка пользовательского прерывания}

Game; {непосредственно вызов игры}

SetOldInt; {восстановления старого вектора прерывания}

CloseGraph; {закрытие графического режима}

end.



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

Таганрогский государственный радиотехнический университет

Кафедра вычислительной техники
_____________________________________________________________________

Дистанционное обучение

2000 – 2001 учебный год

ОТЧЕТ

о выполнении практических заданий

по курсу

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ


Студента группы ВД – 49


Каретина Флориана Викторовича


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

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


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

оценка подпись преподавателя


_______________________

дата проверки задания


Рецензия преподавателя

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________


Описание программы созданной с помощью Turbo Visual.


Начинается программа с подключения библиотек Turbo Visual:

uses App, Objects, Menus, Drivers, Editors, Views;

Основной блок программы состоит из трех команд:

Begin

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

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

MyApp.Done; {Завершить исполнение программы}

End.

Для создания собственной строки статуса вводим следующее описание:

type

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

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

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

Procedure TMyApp.InitStatusLine;

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

Begin

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, {другой}

nil)), {больше нет клавиш}

nil))) {больше нет определений}

End;

Формирование меню:

Описание в разделе типов:

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

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

Тело процедуры:

procedure TMyApp.InitMenuBar;

Var R:TRect;

Begin

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

R.B.Y:=R.A.Y+1;

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

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

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

{меню File}

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

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

{меню Window}

nil) {больше нет подменю}

)))); {конец полосы}

End;

Создание окон и манипуляции с ними:

Описание:

procedure NewWindow; virtual;

procedure HandleEvent(var Event:TEvent); virtual;

end;

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

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

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

end;

PInterior=^TInterior;

TInterior=object(TScroller)

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

procedure Draw; virtual;

procedure HandleEvent(var Event:TEvent); virtual;

end;

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

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

var

S:String[3];

Interior:PInterior;

HS, VS: PScrollBar;

begin

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

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

GetClipRect(Bounds);

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

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

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

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

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

end;

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

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

begin

TScroller.Init(Bounds, HS, VS);

GrowMode:=gfGrowHiX+gfGrowHiY;

end;

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

procedure TInterior.Draw;

begin

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

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

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

end;

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

procedure TMyApp.NewWindow;

var

Window:PDemoWindow;

R: TRect;

Begin

Inc(WinCount);

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

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

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

DeskTop^.Insert(Window); {вывести окно на панель экрана}

End;

Описание тела процедуры обработки команд среды

procedure TMyApp.HandleEvent(var Event:TEvent);

Begin

TApplication.HandleEvent(Event); {действует как предок}

if Event.What=evCommand Then

Begin

case Event.Command of {но откликается на дополнительные команды}

cmNew: NewWindow; {определяет действие для команды cmNew}

else

Exit;

End;

ClearEvent(Event); {очищает событие после обработки}

end;

End;

Описание тела процедуры обработки команд в окне

procedure TInterior.HandleEvent(var Event:TEvent);

Begin

TScroller.HandleEvent(Event); {действует как предок}

case Event.What of {проверка события}

evKeyDown: {если нажата клавиша}

Begin

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

kbLeft: {стрелка влево}

begin

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

Begin

x:=x-1; {то уменьшить ее на 1}

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

End

end;

kbRight: {стрелка вправо}

begin

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

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

end;

kbUp: {стрелка вверх}

begin

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

Begin

y:=y-1; {то уменьшить ее на 1}

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

End

end;

kbDown: {стрелка вниз}

begin

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

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

end;

end;

Case Event.ScanCode of {проверка скан-кода клавиатуры}

57: {если пробел}

begin

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

TScroller.HideCursor {то скрыть его}

Else

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

end;

end;

End;

end;

End;


Описание игровой программы «Стрельба по мишени».


Игровая программа состоит из трех процедур (minv — уменьшение кол-ва патронов, intro — заставка, go — конец игры) и основного блока программы.

Процедура minv (уменьшение количества патронов).

kv:=kv-1; {уменьшение значение переменной kv (в основной программе она фигурирует как количество патронов) }

setfillstyle(1,9); {установка стиля заполнения фона}

bar((20-kv)*10+415,4,(20-kv)*10+425,12); {стирание одного патрона с экрана}

Процедура intro; {Заставка}

Выводит заставку игры.

settextstyle(0,0,15); {установка стиля текста}

setcolor(12); {установка цвета}

outtextxy(140,100,'ТИР'); {вывод текста}

settextstyle(0,0,2);

setcolor(10);

outtextxy(130,290,'ESC - ');

setcolor(14);

outtextxy(220,290,'Выход из программы');

settextstyle(0,0,1);

tp:='НАЖМИТЕ ЛЮБУЮ КНОПКУ ДЛЯ НАЧАЛА ИГРЫ';

settextstyle(0,0,1);

setcolor(11);

outtextxy(320-trunc(length(tp)*4),340,tp); {вывод текста с расчетом по центру}

a:=readkey;

if ord(a)=27 then exi:=true; {если нажата клавиша Esc – выйти из игры}

setfillstyle(1,0);

bar(100,30,600,350);

Процедура go – выводит заставку конца игры

procedure go; {Конец игры}

begin

settextstyle(0,0,5); {установка стиля вывода текста}

setcolor(2); {установка цвета}

outtextxy(50,200,'ВСЕ,ДОИГРАЛИСЬ');

settextstyle(0,0,2);

readkey;

UROV:=1;MENU:=true;oko:=0;

end;

Основное тело программы

begin

d:=vga;initgraph(d,r,''); {инициализация графики}

setgraphmode(2); {установка графического режима}

randomize; {вызов генератора случайных чисел}

urov:=1;oko:=0; mus:=true; sou:=true;menu:=true; {первоначальная установка переменных}

repeat {начало основного цикла программы}

{Cоздание интерфейса}

cleardevice; {очистака экрана}

setfillstyle(1,1); {установка стиля заполнения фона}

bar(0,0,640,2); {рисование прямоугольников вокруг рабочей области}

bar(0,0,2,480);

bar(0,480,640,478);

bar(640,480,638,0);

setfillstyle(1,9);

bar(2,2,638,17);

bar(2,2,5,478);

bar(2,478,638,475);

bar(638,2,635,478);

setfillstyle(1,3);

bar(5,17,635,19);

bar(5,17,7,475);

bar(5,475,635,473);

bar(635,17,633,475);

setfillstyle(9,14);

setcolor(14); {установка цвета рисования}

moveto(7,460); {перемещение графического курсора в указанные координаты}

for i:=1 to 62 do {рисование песка холмиками}

lineto(i*10+7,460+random(10));

lineto(633,460);

line(7,473,633,473);

line(7,473,7,460);

line(633,473,633,460);

floodfill(9,469,14); {заполнение стилем области, расположенной либо внутри замкнутого контура, либо вне его}

setlinestyle(0,0,1); {установка стиля линий}

setfillstyle(8,6); {установка стиля заполнения фона}

bar(260,408,380,470);

setfillstyle(1,1);

setcolor(14);

line(260,408,260,470);

line(260,408,380,408);

line(380,408,380,470);

fillellipse(320,408,23,15); {вычерчивание контура эллипса текущим цветом и заполнение ограниченной контуром области экрана текущим узором}

setlinestyle(0,3,3);

setcolor(11);

line(320,391,320,376);

fi:=pi;tzm:=40;tzs:=40;

settextstyle(0,0,2);

cou:=0; kv:=20; ov:=1; ex:=0;

setfillstyle(1,15);setcolor(7);

bar(250,6,310,12);

setfillstyle(1,0);

bar(17,2,220,17);

setcolor(12);

outtextxy(20,3,'Cчет:');

setcolor(11);

setfillstyle(1,11);

for i:=1 to kv do fillellipse(i*10+420,8,3,3); {рисование патронов}

if menu then intro; {если menu=true, то вызвать процедуру intro (заставка игры)}

menu:=false;

if exi then goto 1; {если exi=true (выход), то перейти на метку 1}

repeat

if keypressed then a:=readkey;

settextstyle(0,0,1);

outtextxy(280,280,'Нажмите ENTER');

setcolor(random(16));

settextstyle(0,0,2);

str(urov,em);

outtextxy(270,200,concat('УРОВЕНЬ ',em)); {вывод текста с помощью процедуры конкатенации}

str(urov*1000,em);

outtextxy(190,240,concat('Наберите ',em,' очков'));

until ord(a)=13; {выход из цикла по клавише Enter}

setfillstyle(1,0);

bar(180,200,500,300);

gettime(q1,min,sec,q2); {получение системного времени}

mk:=min+1; {увеличение минут на 1}

sk:=sec;

if mk>=60 then begin {если количество минут больше 60,}

hk:=q1+1; {то количество часов увеличить на 1}

mk:=0; {минуты обнулить}

end;

repeat

gettime(q1,min,sec,q2); {получение системного времени}

setfillstyle(1,1); {установка стиля заполнения}

setcolor(4); {установка цвета рисования}

if mk=min then rk:=60-abs(sk-sec) else rk:=abs(sk-sec);

bar(250,6,250+abs(rk),12);

if not(bm) then begin

gettime(q1,min,sec,q2); {получение системного времени}

po:=random(3);

if sec+po>=59 then begin

tpm:=min+1;

tps:=0;

end

else begin

tpm:=min;

tps:=sec+po;

end;

end;

xnp:=round(sin(fi)*24+320);

ynp:=round(cos(fi)*15+406);

xkp:=round(sin(fi)*38+320);

ykp:=round(cos(fi)*30+406);

setlinestyle(0,3,3);

setcolor(11);

line(xnp,ynp,xkp,ykp);

ok:=false;

if keypressed then begin

a:=readkey;

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 fi

if fi>3*pi/2 then fi:=3*pi/2;

if a=' ' then begin {Выстрел}

if (not(fire.v)) and (not(ok)) then begin

minv;

for d:=1 to 100 do begin

if sou then sound(random(200)+100);delay(1);

end;

nosound;

fire.v:=true;

fire.r:=35;

fire.si:=sin(fi)*1.1;

fire.co:=cos(fi);

ok:=true;

fire.xs:=-10;

fire.ys:=-10;

end;

s:=s+1;

end;

end;

if (kv=0) and (not(fire.v)) then ex:=ex+1;

if fire.v then begin {Полет снаряда}

setfillstyle(1,0);

setcolor(0);

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

xv:=round(fire.si*fire.r+320);

yv:=round(fire.co*fire.r+406);

fire.r:=fire.r+5;

fire.xs:=xv;fire.ys:=yv;

if (fire.xs<=23) or (fire.xs>=622)

or (fire.ys<=33) then begin

cou:=cou-50;

if cou<0 then cou:=0;

setcolor(10);

setfillstyle(1,0);

bar(100,3,220,17);

str(cou,em);

outtextxy(100,3,em);

fire.v:=false;

setfillstyle(1,0);

setcolor(0);

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

end else begin

setfillstyle(1,10);

setcolor(10);

fillellipse(xv,yv,3,3);

end;

if (fire.xs+4>=xm) and (fire.xs-4<=xm+mi)

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

then begin

fire.v:=false;

setfillstyle(1,0);

setcolor(0);

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

bm:=false;mn:=false;

str((7-nch)*100,em);

setfillstyle(1,0);

bar(xm,ym,xm+mi,ym+mi);

for i:=10 to 800 do begin

sound(i);

setcolor(I);

outtextxy(xm,ym,em);

end;

nosound;

setfillstyle(1,0);

bar(xm,ym,xm+30,ym+15);

xm:=-1500;ym:=-1500;

setcolor(10);

bar(100,3,220,17);

cou:=cou+(7-nch)*100;

str(cou,em);

outtextxy(100,3,em);

end;

end;

gettime(q1,min,sec,q2);

if (min>=tpm) and (sec>=tps) and not(mn) then begin

bm:=true;mn:=true;

xm:=random(560)+30;

ym:=random(320)+30;

vm:=random(2)+3;

if vm+sec>=59 then begin

tzm:=min+1;

tzs:=abs(vm+sec-60);

end

else begin

tzm:=min;

tzs:=vm+sec;

end;

repeat

nch:=random(5)+1;

mi:=20+nch*5; {Размер мишени}

until nch<=6;

setfillstyle(1,nch);

bar(xm,ym,xm+mi,ym+mi);

end;

gettime(q1,min,sec,q2);

if (min>=tzm) and (sec>=tzs) then begin

bm:=false;mn:=false;

setfillstyle(1,0);

bar(xm,ym,xm+mi,ym+mi);xm:=-1300;ym:=-1300;

end;

if ok then begin

setcolor(0);

line(xnp,ynp,xkp,ykp);

end;

until (ord(a)=27) or (ex=1) or ((mk=min) and (sec>=sk));

oko:=oko+cou;

str(oko,em);

bm:=false;mn:=false;fire.v:=false;

if cou

until exi;

1: closegraph; {закрытие графического режима}

end.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений22:11:07 18 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
13:25:14 24 ноября 2015

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

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(150512)
Комментарии (1836)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru