.

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

Язык: русский
Формат: курсова
Тип документа: Word Doc
77 399
Скачать документ

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

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

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

_____________________________________________________________________

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

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

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

по курсу

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

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

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

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

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

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

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

_______________________

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

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

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

??

ОГЛАВЛЕНИЕ

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

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

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

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

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

Необходимо разработать игровую программу «Арканоид». Дощечки для
отбивания шарика надо разместить слева и справа. Правая дощечка должна
управляться клавишами «A» и «Z» (вверх и вниз соответственно), а правая
дощечка должна управляться клавишами «L» и « Текст программы 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 R1430 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 R2430 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 R1430 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 R2430 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);

Fi?????????????

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

if ChC then

begin

ChC:=False;

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

end;

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

if (BX(R1-55)) and (BY580) and (BY>(R2-55)) and (BY600) then

begin

rBX:=60;

rBY:=R1;

kX:=-Abs(kX);

Sound(700);

Delay(500);

NoSound;

Inc(MissCount2);

ChC:=True;

end;

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

if (BY470) then kY:=-kY;

oBX:=BX;

oBY:=BY;

Delay(10);

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

end;

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

begin

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

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

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

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

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

end.

PAGE

PAGE 3

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Ответить

Курсовые, Дипломы, Рефераты на заказ в кратчайшие сроки
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2020