Арканоид на Паскале

readln(f);

end;

close(f);

x:=getmaxx div 2-140;

y:=35;

bar3d(x,y,x+280,y+100,0,false);

settextjustify(centertext,centertext);

settextstyle(4{Gothic Font},horizdir,3);

setcolor(lightcyan);

outtextxy(x+140,y+10,'Enter your name');

myname:='';

while true do

if keypressed then

begin

i:=readkey;

case i of

#13: goto ld;

else begin

outtextxy(x+20,y+40,i);

inc(x,18);

myname:=myname+i;

end;

end;

end;

ld:

mynumber:=0;

numb:=1;

while (numb <= 10) and (score < player[numb]) do

inc(numb);

if numb = 11 then

begin

x:=getmaxx div 2-140;

y:=35;

bar3d(x,y,x+280,y+300,0,false);

settextjustify(centertext,centertext);

settextstyle(4{Gothic Font},horizdir,3);

setcolor(lightcyan);

outtextxy(x+140,y+10,'The best players');

settextjustify(lefttext,centertext);

y:=75;

for numb:=1 to 10 do

begin

outtextxy(x+10,y,players_name[numb]);

str(player[numb],s);

outtextxy(x+190,y,s);

inc(y,25);

delay(1000);

end;

end

else

begin

settextstyle(4{Gothic Font},horizdir,3);

mynumber:=numb;

for c:=10 downto numb do

begin

player[c+1]:=player[c];

players_name[c+1]:=players_name[c];

end;

player[mynumber]:=score;

players_name[mynumber]:=myname;

x:=getmaxx div 2-140;

y:=35;

bar3d(x,y,x+280,y+300,0,false);

settextjustify(centertext,centertext);

settextstyle(4{Gothic Font},horizdir,3);

setcolor(lightcyan);

outtextxy(x+140,y+10,'The best players');

y:=75;

settextjustify(lefttext,centertext);

for numb:=1 to 10 do

begin

outtextxy(x+10,y,players_name[numb]);

str(player[numb],s);

outtextxy(x+190,y,s);

inc(y,25);

delay(1000);

end;

rewrite(f);

for numb:=1 to 10 do

begin

writeln(f,players_name[numb]);

writeln(f,player[numb]);

end;

close(f);

end;

readkey;

end;

end.

Дополнительная программа для построения собственных уровней :

Правила пользования программой:

1) запустить MARKEDIT.EXE

2) нажимая левую кнопку мыши ставить(рисовать) кубики;

3) после построения уровня нажать правую кнопку мыши;

4) после появления меню номеров уровней выбрать номер сохраняемого уровня (файла);

Спецификации подпрограмм:

1. proceduretext_na_ekran;

Назначение: используется как справка и всегда показывается при запуске;

Входные данные:

нет;

Выходные данные:

нет;

2. function netu:boolean;

Назначение: при нажатии левой кнопки мыши определяет, есть ли на этом месте уже кубик или нет;

Входные данные:

нет;

Выходные данные:

True: рисуем кубик;

False: на этом месте уже есть кубик, значит не рисуем;

3. procedure stroika;

Назначение: рисует кубик и записывает его координаты в файл;

Входные данные: нет;

Выходные данные: нет;

4. procedure search_y;

Назначение: ищет подходящие координаты для построения кубика;

Входные данные: нет;

Выходные данные: нет;

5. procedure build_level;

Назначение: строит этап, используя вышеописанные подпрограммы;

Входные данные: нет;

Выходные данные: нет;

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

program markedit;

uses graph,crt,mymouse;

type t_kubik=-10 640;

t_arr=array[1 494] of t_kubik;

var x,y:word;

f,f_s:text;

a:t_arr;

i:1 494;

procedure initgr;

var grdriver,grmode:integer;

begin

grdriver:=vga;

grmode:=vgahi;

initgraph(grdriver,grmode,'');

if GraphResult <> grOk then halt;

end;

procedure text_na_ekran;

var f:text;

a:char;

begin

assign(f,'stroika.txt');

reset(f);

textmode(1);

textbackground(3);

textcolor(0);

clrscr;

while not eof(f) do

begin

while not(eof(f)) do

begin

read(f,a);

write(a);

end;

writeln;

end;

while not(keypressed) do

case readkey of

' ':exit;

end;

close(f);

end;

function netu:boolean;

var k:1 494;

begin

for k:=1 to 494 do

begin

if a[k]=x then

if a[k+1]=y then

begin netu:=false; exit; end;

end;

netu:=true;

end;

procedure stroika;

var color:1 15;

pattern:1 12;

begin

if netu then

begin

writeln(f,x,' ',y);

a[i]:=x;

a[i+1]:=y;

inc(i,2);

color:=random(14)+1;

pattern:=random(11)+1;

setcolor(color);

setfillstyle(pattern,color);

bar3d(x,y,48+x,y-20,0,false);

end;

end;

procedure search_y;

begin

case y of

22 42: begin y:=42; stroika; end;

43 63: begin y:=63; stroika; end;

64 84: begin y:=84; stroika; end;

85 105: begin y:=105; stroika; end;

106 126:begin y:=126; stroika; end;

127 147:begin y:=147; stroika; end;

148 168:begin y:=168; stroika; end;

169 189:begin y:=189; stroika; end;

190 210:begin y:=210; stroika; end;

211 231:begin y:=231; stroika; end;

232 252:begin y:=252; stroika; end;

263 273:begin y:=273; stroika; end;

274 294:begin y:=294; stroika; end;

295 315:begin y:=315; stroika; end;

316 336:begin y:=336; stroika; end;

337 357:begin y:=357; stroika; end;

358 378:begin y:=378; stroika; end;

379 399:begin y:=399; stroika; end;

400 420:begin y:=420; stroika; end;

end;

end;

procedure build_level;

var buttoncount,errorcode:byte;

lb,rb,tb:boolean;

x_pred:word;

s,s_l:string;

number:0 10;

spusk:1 500;

code:integer;

begin

initmouse(buttoncount,errorcode);

cleardevice;

{а¬Є }

setcolor(random(14)+1);

rectangle(0,21,getmaxx,getmaxy);

setcolor(brown);

s:='when finish --- press the right button of the mouse';


Страница: