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

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. procedure text_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';

settextstyle(7{GothicFont},horizdir,2);

settextjustify(1,1);

outtextxy(getmaxx div 2,5,s);


setYrange(21,420);


setXrange(1,637);

assign(f,'level.den');

rewrite(f);

x:=10;y:=10;

setmouseXY(x,y);

x_pred:=0;

mouseon;

repeat

getmouseXY(x,y,lb,rb,tb);

if lb then begin

mouseoff;

if x<>x_pred then

case x of

1..49: begin x:=1; search_y; end;

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: