Арканоид на ПаскалеРефераты >> Программирование и компьютеры >> Арканоид на Паскале
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';