setfillstyle(9,7);
case t of
right : a:=a+5;left : a:=a-5;up : d:=d-5;down : d:=d+5;
's' : begin d:=d+15; a:=a; end;
'w' : begin d:=d-15; a:=a; end;
'`' : begin read(cod); if cod='money' then begin schet:=schet+2000; cod:=''; t:='y'; end; end;
']' : begin read(cod1); if cod1='bonus' then begin plus:=plus-1000; cod1:=''; t:='y';end; end;
end;
if z>(yr*2) then z:=z-yr else begin z:=640;zz:=(460-random(355)) end;
if v>(yr*2) then v:=v-yr else begin v:=640;vv:=(460-random(355)) end;
if k>(yr*2) then k:=k-yr else begin k:=640;kk:=(460-random(355)) end;
if l>(yr*2) then l:=l-yr else begin l:=640;ll:=(460-random(355)) end;
if i>(yr*2) then i:=i-yr else begin i:=640;ii:=(460-random(355)) end;
if a<6 then a:=6 ;
if d<niz+1 then d:=niz+1 ;
if a>594 then a:=594 ;
if d>verx-1 then d:=verx-1 ;
if sd=true then begin sound(500); delay(100); nosound; end;
inc(schet);
if ((schet mod 200)=0) and (yr<20) then begin
setcolor(0);
line(25+yr*2,101,25+yr*2,480);
yr:=yr+1; end;
if (schet mod 500)=0 then begin
plus:=plus-35; pl:=70-plus; setcolor(12);
outtextxy(50,35, och);
setcolor(red);
str(pl,och); outtextxy(50,35, och);
setlinestyle(0,0,1);
if (schet mod 10)=0 then begin
setcolor(12);
outtextxy(560,35, och1);
str(schet,och1);
outtextxy(560,35, och1); end;
if (schet>500) and (level=1) then
begin
ll:=350; l:=680;lev('Level 2','2');level:=2;end;
if (schet>1500) and (level=2) then
kk:=300; k:=780;lev('Level 3','3');level:=3;end;
if (schet>3000) and (level=3) then
i:=980;ii:=400;lev('Level 4','4');level:=4;end;
if (schet>5000) and (level=4) then
lev('Level 5','5');level:=5;end;
if (schet>7000) and (level=5) then
lev('Level 6','6');
level:=6;end;
if (schet>10000) and (level=6) then
lev('Level 7','7');level:=7;end;
if sd=false then delay(50);
setfillstyle(1,0);
if sd=false then delay(10);
putimage(a-10,d-25,ver^,0);
{Level 1}
putimage(v,vv,barer1^,0);
if (schet mod bonn)=0 then inc(aw);
if (aw mod 2)=0 then
putimage(v-50,vv+80,barer2^,0);
putimage(z,zz,barer^,0);
{Level 2}
if level>1 then putimage(l,ll,barer1^,0);
{Level 3}
if level>2 then putimage(k,kk,barer^,0);
until Ord(t)=258;
freemem(ver,imagesize(a-10,d-25,a+53,d+40));
freemem(barer,imagesize(300,300,340,350));
freemem(barer1,imagesize(400,300,440,350));
closegraph;
Score(schet,nik);
end.
Модуль Menu
unit menus;
interface
uses crt,graph,games,options,help;
const left=#75;
right=#77;
down=#72;
up=#80;
procedure cartinka;
procedure menu;
procedure key1(ch:char);
implementation
var ch:char;
ka,kd,n,a,d,q,r,e,s:integer;
text:string;
sd:boolean;
bor,men0,men1,men2:pointer;
if ord(ch)=80 then begin if d=380 then
rectangle(a+2,d+2,a+398,d+48);
setcolor(3);
d:=100;
d:=d+70;
if d<>170 then begin
rectangle(a+2,d+2-70,a+398,d+48-70);
if ord(ch)=72 then begin if d<240 then
d:=450;
d:=d-70;
if d<>380 then begin
rectangle(a+2,d+2+70,a+398,d+48+70);
setcolor(3); end;
q:=detect; initgraph(q,r,'');
e:=GraphResult;
If e<>grok then
writeln(GraphErrorMsg(e))
else
sd:=true;
a:=100;
d:=170;
setfillstyle(1,4);
bar(100,170,500,220);
getmem(bor,imagesize(100,170,500,220));
getimage(100,170,500,220,bor^);
setcolor(13);
settextstyle(1,0,9);
text:='VERTOLET';
cleardevice;
vert(30,20,4);
vert(550,20,4);
outtextxy(100,5, text);
outtextxy(102,5, text);
outtextxy(104,5, text);
setbkcolor(0);
setcolor(7);
setfillstyle(1,red);
settextstyle(1,0,5);
putimage(100,170,bor^,xorput);
text:=' Play game ';
outtextxy(200,165, text);
outtextxy(202,165, text);
putimage(100,240,bor^,xorput);
text:=' Options ';
outtextxy(220,235, text);
outtextxy(222,235, text);
putimage(100,310,bor^,xorput);
text:=' Help ';
outtextxy(240,305, text);
outtextxy(242,3055, text);
putimage(100,380,bor^,xorput);
text:=' Exit ';
outtextxy(240,375, text);
outtextxy(242,375, text);
repeat
cartinka;
getmem(men0,imagesize(10,10,620,170));
getimage(10,10,620,170,men0^);
getmem(men1,imagesize(10,170,550,230));
getimage(10,170,550,230,men1^);
getmem(men2,imagesize(10,230,550,460));
getimage(10,230,550,460,men2^);
putimage(10,10,men0^,0);
putimage(10,170,men1^,0);
putimage(10,230,men2^,0);
setlinestyle(0,0,3);
ch:=readkey;
key1(ch);
until ord(ch)=13;
if d=240 then sd:=option;
if d=310 then begin closegraph; pravila;
until (d=170) or (d=380);
freemem(men0,imagesize(10,10,620,170));freemem(men1,imagesize(10,170,550,230));
freemem(men2,imagesize(10,230,550,460));
if d =170 then begin if sd=false then game(false) else game(true);
until d=380 ;
Модуль Option
unit options;
uses crt,graph;
function option:boolean;
procedure key(ch:char);
procedure tex;
a,d:integer;
opt:pointer;
text:='S o u n d';
text:='on';
outtextxy(260,165, text);
text:='off';
bar(100,240,500,290);
outtextxy(260,235, text);
if ord(ch)=80 then begin if d=240 then
d:=310;
if d<>240 then begin
tex;
option:=false;
key(ch);
if d =170 then option:=true;
Модуль Help
unit help;
uses crt;
procedure pravila;
clrscr;
textcolor(red);
Writeln(' ПРАВИЛА ИГРЫ');
textcolor(Green);
Writeln('Вы управляете вертолетом "А-308" на борту которого находятся взрывчатые');
Write('вещества. Ваша цель перевести их в пункт назначения не врезавшись в препятствия. ');
Write('В начале игры у вас имеется 70 бонусов, с помощью которых вы можете пролететь');
Write('сквозь препятствие. Через каждые 500 метров вам начисляется 35 бонусов');
Writeln;
Writeln;Writeln;Writeln;
Writeln(' УПРАВЛЕНИЕ');
Writeln('Управление вертолетом осуществляется с помошью клавишь стрелок. ');
Write('При нажатии клавиши пробел активируется защитное поле(бонус) и при нажатии любой другой');
Write('клавиши выключается.');
Writeln('Также вертолет может резко набрать высоту {клавиша w } и снизиться {клавиша s} ');
СПИСОК ЛИТЕРАТУРЫ
1. Фаронов В.В Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М: издательство «Нолидж», 1998.
2. Меженный О.А. Самоучитель Turbo Pascal. – М: издательство «Диалектика», 2004.
3. Николаев А.Б. Турбо Паскаль в примерах.- М:издательство «Просвещение», 2002.
Страницы: 1, 2, 3, 4