Курсовая работа по информатике





Скачать 276.54 Kb.
НазваниеКурсовая работа по информатике
страница2/3
Дата публикации21.04.2015
Размер276.54 Kb.
ТипКурсовая
100-bal.ru > Информатика > Курсовая
1   2   3

Siege





SiegeLogo


VGASpr

SiegeSpr

LogoScreen


Refrace



VGA13H

Buttons




3.1 Описание назначения модулей.

S i e g e – основная программа, вызывающая на выполнение программные модули.

Модуль S i e g e S p r - модуль, содержащий игровые объекты (картинки).

Модуль V G A S p r – модуль для рисования спрайтов.

Модуль L o g o s c r e e n –заставка курсовой работы.

Модуль S i e g e L o g o – модуль, содержащий меню, инструкцию, предысторию.

Модуль B u t t o n s – модуль, позволяющий осуществлять нажатие и отпускание клавиши, информацию о состоянии клавиш в реальном времени и об отпущенных клавишах.

Модуль R e t r a c e – модуль,позволяющий осуществлять синхронизацию вывода в видеопамять.

Модуль V G A 1 3 H - модуль для работы с графикой.

ЗАКЛЮЧЕНИЕ

Таким образом, представляемая компьютерная игра относится к классу комбинаторных игр, поскольку может быть использована как в качестве развивающей внимание, реакцию, психомоторные навыки (способности) игры, так и для приятного времяпрепровождения и отдыха. При создании компьютерной игры мы старались сделать её по возможности красочнее, интереснее и увлекательнее.

Мы бы порекомендовали эту игру для детей школьного возраста, однако, показав ее врозлым, она заинтересовала и их. Поэтому нам кажется,что она вполне пригодна и для более взрослой аудитории.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Игнатьева А.И. Компьютерные игры. (с. 3-10, 31-35) М. 1988.

  2. Домашний компьютер - №4(с. 62-68),1999

  3. Домашний компьютер - №12(с. 78-88),1999

  4. Инфо–№2: Компьютерные игры в обучение (с.61-65) /Под ред. Марнуми Е., Когов Ю. 1990.

  5. Лукашенко М.А. «Информатика в играх и задачах» (с.1-5) //Нач.шк. /Приложение к газете «1 сентября» - 1994, №44

  6. Инфо-№4: Компьютерная игра: учим или играем (64-67) /Под ред.

Марусева И.В. 1997.

7. Коубс Р. и Влейминк И. Интерфейс (36-40) 1991.

8. Ла Мот А. Секреты программирования игр (7-10) 1995.

9. Фридланд А.Я. Информатика. Толковый словарь основных терминов. (57-62) М. 1998.

10. 350 игр для IBM PC, Дж. Дворак, «Пергамент» - Санкт -Петербург, 1994 .

11. Turbo Pascal 7. 0, Фаронов В.В. /Изд. «Нолидж», 1999.

ПРИЛОЖЕНИЕ:

Program Siege;

Uses LogoScreen,

DOS, VGA13h, VGASpr, Retrace, Buttons,

SiegeLogo, SiegeS

pr;

Type

EnemyType = record

X,Y,D,S,A:Integer;

Falling:Boolean;

Free:Boolean;

end;

Const

MaxEnemies = 50;

ComboStr:Array [0..5] of String[20] =

('Looser!!!',

'',

'2 hit combo',

'Eat this!',

'Ough! 4 mans at once',

'Aaaaaaaaamazing!!!');

Var

ManX,StoneY,StoneX,EnemyDelay,EnemyLimit:Integer;

Enemies:Array [1..MaxEnemies] of EnemyType;

Score,Level,Kills,Combo:Word;

Timer:Longint;

GameOver:Boolean;

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

Const

ca:Word = 0;

cc:String[20] = '';

Procedure ComboString(s:String);

begin

if s<>'' then

begin

cc:=s;

ca:=10;

end;

if ca>0 then

begin

DrawString(Base2,160-Byte(cc[0])*4,90,cc);

Dec(ca);

end;

end;

Procedure NextLevel; forward;

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

Procedure InitEnemies;

Var

i:Byte;

begin

for i:=1 to MaxEnemies do Enemies[i].Free:=true;

end;

Procedure DrawEnemies;

Var

i:Byte;

begin

for i:=1 to MaxEnemies do

With Enemies[i] do if not Free then

DrawTSpr(Base2,X,Y,EnemyHgt,EnemyWdt,@EnemySpr[A]);

end;

Procedure MoveEnemies;

Var

i:Byte;

begin

for i:=1 to MaxEnemies do

With Enemies[i] do

if not Free then

begin

if Falling then

begin

Y:=Y+10;

if Y>199 then

begin

Free:=true;

if Kills=(Level+1)*20 then NextLevel;

end;

if D=0 then

begin

Inc(A);

if A>2 then A:=1;

D:=2;

end else Dec(D);

end else

if D=0 then

begin

Y:=Y-5;

if Y<40 then GameOver:=true;

Inc(A);

if A>2 then A:=1;

D:=S;

end else Dec(D);

end else

if (EnemyLimit>0) and (EnemyDelay=0) then

begin

X:=Random(38)*8;

Y:=200;

D:=0;

S:=(10-Level);

A:=1;

EnemyDelay:=(13-Level)*2+1;

Falling:=false;

Free:=false;

Dec(EnemyLimit);

end;

Dec(EnemyDelay);

end;

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

Procedure DrawScreen;

Var

x,y:Integer;

s:String[80];

tmp:String[6];

begin

Bar(Base2,0,0,319,9,8);

FillBase(Base2,3200,9600,$03030303);

for y:=0 to 15 do

for x:=0 to 31 do

DrawOSpr(Base2,x*10,40+y*10,BrickHgt,BrickWdt,@BrickSpr);

s:='ю ~SIEGE~ ю Level:';

Str(Level,tmp);

While Byte(tmp[0])<2 do tmp:='ъ'+tmp;

s:=s+tmp+' ю Score:';

Str(Score,tmp);

While Byte(tmp[0])<5 do tmp:='ъ'+tmp;

s:=s+tmp+' ю';

DrawString(Base2,1,1,s);

end;

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

Procedure DrawMan;

begin

if StoneY=0 then

begin

DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[2]);

DrawTSpr(Base2,ManX*8+4,17,StoneHgt,StoneWdt,@StoneSpr);

end else

begin

DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1]);

DrawTSpr(Base2,StoneX,StoneY,StoneHgt,StoneWdt,@StoneSpr);

Inc(StoneY,10);

if StoneY>199 then

begin

StoneY:=0;

if Combo<7 then ComboString(ComboStr[Combo]) else ComboString('Kiiler!!!');

Combo:=0;

end;

end;

end;

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

Procedure CheckCollisions;

Var

i:Byte;

begin

if StoneY>0 then

for i:=1 to MaxEnemies do

With Enemies[i] do

if not Free and not Falling then

begin

if ((StoneX+8>X) and (StoneX
((StoneY+8>Y) and (StoneY
begin

Falling:=true;

D:=0;

Inc(Score);

Inc(Kills);

Inc(Combo);

end;

end;

end;

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

Procedure NextLevel;

Var

i:Byte;

begin

Timer:=MemL[Seg0040:$006C];

Inc(Level);

for i:=1 to 30 do

begin

ClearBase(Base2);

DrawScreen;

DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1+Byte(i and 1=1)]);

DrawString(Base2,132,80,'Level '+Char($30+Level));

WaitRetraceMode;

CopyBase(Base2,Base1);

While Timer=MemL[Seg0040:$006C] do;

Timer:=MemL[Seg0040:$006C];

end;

EnemyLimit:=(1+Level)*20;

EnemyDelay:=0;

Kills:=0;

ca:=0;

end;

Procedure GameOverProc;

Var

i:Byte;

begin

ClearBase(Base2);

DrawScreen;

DrawString(Base2,124,80,'Game Over');

WaitRetraceMode;

CopyBase(Base2,Base1);

Timer:=MemL[Seg0040:$006C];

for i:=1 to 30 do

begin

While Timer=MemL[Seg0040:$006C] do;

Timer:=MemL[Seg0040:$006C];

end;

end;

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

Procedure Init;

begin

if not DetectVGA then

begin

Writeln('Необходим VGA совместимый видеоадаптер.'#7);

Halt(1);

end;

SetGraphMode;

InitButtons;

Randomize;

ManX:=19;

Timer:=MemL[Seg0040:$006C];

EnemyLimit:=(Level+1)*20;

GetIntVec($43, Pointer(Font));

end;

Procedure Game;

begin

InitEnemies;

Level:=0;

Score:=0;

Kills:=0;

Combo:=0;

EnemyLimit:=(Level+1)*20;

GameOver:=false;

Repeat

ClearBase(Base2);

DrawScreen;

DrawEnemies;

DrawMan;

ComboString('');

MoveEnemies;

CheckCollisions;

if Key[keyLeft] then if ManX>0 then Dec(ManX);

if Key[keyRight] then if ManX<38 then Inc(ManX);

if Key[keySpace] then if StoneY=0 then

begin

StoneX:=(ManX*8)+4;

StoneY:=24;

end;

WaitRetraceMode;

CopyBase(Base2,Base1);

While Timer=MemL[Seg0040:$006C] do;

Timer:=MemL[Seg0040:$006C];

Until Key[keyEsc] or (Level>=10) or GameOver;

if GameOver then GameOverProc;

end;

Procedure Done;

begin

DoneButtons;

SetTextMode;

DoneVirtualPage;

end;

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

Var

choice:Byte;

begin

Init;

Repeat

choice:=Logo;

Case choice of

1:Game;

2:Info;

3:Story;

end;

Until choice=4;

Done;

end.

UNIT Buttons;

INTERFACE

Uses DOS;

Const

keyESC = 1;

keyF1 = 59;

keyF2 = 60;

keyF3 = 61;

keyF4 = 62;

keyF5 = 63;

keyF6 = 64;

keyF7 = 65;

keyF8 = 66;

keyF9 = 67;

keyF10 = 68;

keyF11 = 87;

keyF12 = 88;

keyScrollLock = 70;

keyTilde = 41;

key1 = 2;

key2 = 3;

key3 = 4;

key4 = 5;

key5 = 6;

key6 = 7;

key7 = 8;

key8 = 9;

key9 = 10;

key0 = 11;

keyUnderline = 12;

keyEquality = 13;

keyBackspace = 14;

keyTab = 15;

keyQ = 16;

keyW = 17;

keyE = 18;

keyR = 19;

keyT = 20;

keyY = 21;

keyU = 22;

keyI = 23;

keyO = 24;

keyP = 25;

keyIndex = 26;

keyBackIndex = 27;

keyEnter = 28;

keyCapsLock = 58;

keyA = 30;

keyS = 31;

keyD = 32;

keyF = 33;

keyG = 34;

keyH = 35;

keyJ = 36;

keyK = 37;

keyL = 38;

keyDoublePeriod = 39;

keyApostroph = 40;

keyLShift = 42;

keyBackSlash = 43;

keyZ = 44;

keyX = 45;

keyC = 46;

keyV = 47;

keyB = 48;

keyN = 49;

keyM = 50;

keyComma = 51;

keyPeriod = 52;

keySlash = 53;

keyRShift = 54;

keyCtrl = 29;

keyAlt = 56;

keySpace = 57;

keyNumLock = 69;

keyMultiply = 55;

keyMinus = 74;

keyPlus = 78;

keyDelete = 83;

keyHome = 71;

keyUp = 72;

keyPgUp = 73;

keyLeft = 75;

keyFive = 76;

keyRight = 77;

keyEnd = 79;

keyDown = 80;

keyPgDn = 81;

keyInsert = 82;

KeyPressed:Boolean = FALSE;

Var

Key :Array [1..128] of Boolean;

WasPressed:Array [1..128] of Boolean;

Const

CheckWarmReboot:Boolean = TRUE;

WarmRebootFlag :Boolean = FALSE;

Procedure InitButtons;

Procedure DoneButtons;

Function ButtonsInited:Boolean;

Function IsKeypressed:Boolean;

Function Pressed(Index:Byte):Boolean;

Procedure ClearKeys;

IMPLEMENTATION

Const

Init:Boolean=FALSE;

Var

OldKbdHandler:Pointer;

Procedure Int9; INTERRUPT;

Var

ScanCode,Tmp:Byte;

begin

ScanCode:=Port[$60];

if ScanCode and 128=0 then

begin

Key[ScanCode]:=TRUE;

KeyPressed:=TRUE;

end else

begin

ScanCode:=ScanCode xor 128;

Key[ScanCode]:=FALSE;

WasPressed[ScanCode]:=TRUE;

KeyPressed:=FALSE;

end;

if CheckWarmReboot and (ScanCode=keyDelete) then

begin

Tmp:=Mem[Seg0040:$0017];

if Tmp and 12=12 then

begin

Tmp:=Tmp xor 21;

WarmRebootFlag:=TRUE;

end;

Mem[Seg0040:$0017]:=Tmp;

end;

asm

in al,61h

or al,82h

out 61h,al

and al,7Fh

out 61h,al

mov al,20h

out 20h,al

end;

end;

Procedure InitButtons;

begin

if not Init then

begin

GetIntVec($9,OldKbdHandler);

SetIntVec($9,@Int9);

FillChar(Key,SizeOf(Key),FALSE);

FillChar(WasPressed,SizeOf(WasPressed),FALSE);

CheckWarmReboot:=TRUE;

WarmRebootFlag:=FALSE;

Init:=TRUE;

end;

end;

Procedure DoneButtons;

begin

if Init then

begin

SetIntVec($9,OldKbdHandler);

WarmRebootFlag:=FALSE;

Init:=FALSE;

end;

end;

Function ButtonsInited;

begin

ButtonsInited:=Init;

end;

Function IsKeypressed;

Var

i:Byte;

f:Boolean;

begin

f:=false;

i:=1;

While (i<=128) and not f do

begin

f:=Key[i];

Inc(i);

end;

IsKeypressed:=f;

end;

Function Pressed;

begin

if WasPressed[Index] then

begin

WasPressed[Index]:=FALSE;

Pressed:=TRUE;

end else Pressed:=FALSE;

end;

Procedure ClearKeys;

begin

FillChar(Key,SizeOf(Key),false);

FillChar(WasPressed,SizeOf(WasPressed),false);

end;

END.
1   2   3

Похожие:

Курсовая работа по информатике iconКурсовая работа по информатике тема работы: Выбор тормоза механизма передвижения башенного крана

Курсовая работа по информатике iconКурсовая работа на тему : Формирование рынка ценных бумаг в Украине
Курсовая работа содержит 38 листов, 2 рисунка, 2 таблицы и было использовано 11 источников
Курсовая работа по информатике iconКурсовая работа
Курсовая работа оформляется в виде электронного файла и прикрепляется к своей странице в системе мониторинга нир. Распечатывать работу...
Курсовая работа по информатике iconКурсовая работа по дисциплине Электромагнитная совместимость систем...
Курсовая работа состоит из 20 с, в которых содержаться: 3 рисунка, 3 таблицы, 6 формул и 4 ссылки на литературу
Курсовая работа по информатике iconКурсовая работа по дисциплине «Предпринимательское право»
Курсовая работа имеет целью систематизацию, закрепление и расширение теоретических знаний, углубленное изучение и решение студентом...
Курсовая работа по информатике iconКурсовой работы. Составитель: доцент Корляков А. С. Екатеринбург...
Курсовая работа самостоятельная работа студента, выполняемая в соответствии с типовой программой учебного процесса по подготовке...
Курсовая работа по информатике iconРекомендации к оформлению курсовой и дипломной работы по истории искусства. Курсовая работа
Курсовая работа задание, которое выполняется студентами в определённый срок и по определённым требованиям. Защита курсовых работ...
Курсовая работа по информатике iconКурсовая работа по информатике на тему: «Эффективность поиска в Интернете...
Целью данной работы является оценка эффективности поисковых стратегий в информационно-поисковых системах (ипс)
Курсовая работа по информатике iconКурсовая работа является обязательным видом итогового контроля по...
Курсовая работа – это первый этап в самостоятельном теоретическом осмыслении материала, накопленного в ходе обучения в университете,...
Курсовая работа по информатике iconКурсовая работа на тему «Открытый урок»
Данная курсовая работа выполнена для того, чтобы учителя русского языка и литературы могли использовать разработанные мною уроки...
Курсовая работа по информатике iconКурсовая работа учебно-методическое пособие для студентов, обучающихся...
Курсовая работа: Учебно-методическое пособие / Автор составитель Е. М. Крупеня. М.: 30 с
Курсовая работа по информатике iconКурсовая работа учебно-методическое пособие для студентов, обучающихся...
Курсовая работа: Учебно-методическое пособие / Автор составитель Е. М. Крупеня. М.: 30 с
Курсовая работа по информатике iconМетодические указания к написанию курсовых работ курсовая работа
Курсовая работа является важнейшим элементом самостоятельной работы студентов. Основной целью курсовой работы является создание и...
Курсовая работа по информатике iconКурсовая работа Разработка проекта аис на примере муз «Городская больница»
Курсовая работа является одним из видов учебных занятий и выполняется в соответствии с учебным планом специальности. При написании...
Курсовая работа по информатике iconКурсовая работа Формирование понятия «плазма»
Реферат, курсовая Методика формирования понятия Плазма в школьном курсе физики. Скачать
Курсовая работа по информатике iconСодержание учебного материала, лабораторные работы и практические...
Содержание учебного материала, лабораторные работы и практические занятия, самостоятельная работа обучающихся, курсовая работа (проект)...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск