program liikprocedure; uses crt, graph; {$I graafika.pas} label out; var noodid:array[1..50] of integer; n,x,y,kiirusx,kiirusy,kx,ky,rx,ry,count1,count2, noodikoht: integer; c,s,right1,left1,up1,down1,right2,left2,up2,down2: char; tmp_string,outstring: string; procedure muusika; begin sound(noodid[noodikoht]); noodikoht:=noodikoht+1; if noodikoht>10 then noodikoht:=1; nosound; end; procedure setup; begin cleardevice; while not keypressed do begin SetTextStyle(DefaultFont, HorizDir, 8); setcolor(yellow); setbkcolor(green); outtextxy(50,200,'T'); setcolor(brown); outtextxy(150,200,'E'); setcolor(blue); outtextxy(250,200,'N'); setcolor(red); outtextxy(350,200,'N'); setcolor(white); outtextxy(450,200,'I'); setcolor(5); outtextxy(550,200,'S'); nosound;delay(100); sound(250); delay(200); sound(375); delay(200); sound(500); delay(200); sound(375); delay(200); sound(500); delay(200); sound(375); delay(200); sound(250); delay(200); sound(375); delay(200); nosound; SetTextStyle(DefaultFont, HorizDir, 3); setcolor(white+blink); outtextxy(5,350,'for setup - press any key'); end; nosound; sound(250); delay(200); sound(200); delay(500); sound(100); delay(500); nosound; readkey; delay(500); cleardevice; SetTextStyle(DefaultFont, HorizDir, 3); cleardevice; setcolor(white); setbkcolor(black); outtextxy(150,50,' Player 1'); outtextxy(150,100,'press key for:'); outtextxy(150,150,'right -'); right1 := readkey; outtextxy(400,150,right1); outtextxy(150,200,'left -'); left1 := readkey; outtextxy(400,200,left1); outtextxy(150,250,' up - '); up1:=readkey; outtextxy(400,250,up1); outtextxy(150,300,'down -'); down1:=readkey; outtextxy(400,300,down1); outtextxy(150,350,' exit - "esc"'); outtextxy(150,400,'press any key'); readkey; cleardevice; outtextxy(150,50,' Player 2'); outtextxy(150,100,'press key for:'); outtextxy(150,150,'right -'); right2 := readkey; outtextxy(400,150,right2); outtextxy(150,200,'left -'); left2 := readkey; outtextxy(400,200,left2); outtextxy(150,250,' up - '); up2:=readkey; outtextxy(400,250,up2); outtextxy(150,300,'down -'); down2:=readkey; outtextxy(400,300,down2); outtextxy(150,350,' exit - "esc"'); outtextxy(150,400,'press any key'); readkey; cleardevice; outtextxy(150,150,' get ready'); outtextxy(150,320,'press any key'); readkey; cleardevice; noodid[1]:=440; noodid[2]:=400; noodid[3]:=380; noodid[4]:=360; noodid[5]:=400; noodid[6]:=420; noodid[7]:=500; noodid[8]:=580; noodid[9]:=460; noodid[10]:=440; noodid[11]:=440; end; procedure go2; forward; procedure go1;forward; procedure level; label out; var c: char; begin cleardevice; repeat SetTextStyle(DefaultFont, HorizDir, 3); setcolor(yellow); setbkcolor(black); outtextxy(150,100,'LEVELS'); outtextxy(120,200,'CHOOSE SPEED FOR BALL'); outtextxy(150,250,'speed 1'); outtextxy(150,300,'speed 2'); outtextxy(150,350,'speed 3'); outtextxy(150,400,'speed 4'); SetTextStyle(DefaultFont, HorizDir,2); setcolor(red); outtextxy(0,450,'if you do not want choose - press escape'); until keypressed; c:=readkey; case c of '1': begin kiirusx:=1;kiirusy:=1;end; '2': begin kiirusx:=5;kiirusy:=5;end; '3': begin kiirusx:=10;kiirusy:=10;end; '4': begin kiirusx:=50;kiirusy:=50;end; chr(27): begin go1; goto out; end; else begin repeat SetTextStyle(DefaultFont, HorizDir, 5); setcolor(red+blink); outtextxy(50,450,'ERROR IN CHOOSE'); until keypressed; end;end; begin cleardevice; SetTextStyle(DefaultFont, HorizDir, 3); setcolor(yellow); outtextxy(20,400,'press any key to continue'); readkey; cleardevice; go2; end; out: end; procedure field; begin setcolor(yellow); setbkcolor(green); cleardevice; rectangle(5,5,630,460); {line(300,5 ,300,460); } end; procedure move1(mx, my: integer); begin rectangle(mx+10, my+10, mx+5, my+60); end; procedure move2(mx, my: integer); begin rectangle(mx+10, my+10, mx+5, my+60); end; procedure kirjuta(ix,iy: integer); begin circle(ix+kiirusx-5,iy+kiirusy-5, 10); muusika; end; { kaivitagraafika; outtextxy(10, 10, 'Tere!'); rectangle(5, 5, 70, 20); setcolor(green); setfillstyle(LineFill, red); fillellipse(200, 100, 50, 80); fillellipse(400, 100, 50, 80); ellipse(300, 220, 0, 360, 100, 50); ellipse(300, 200, 210, 330, 230, 130); putpixel(300, 200, red); circle(getmaxx-60, 50, 30); circle(getmaxx-75, 50, 10); circle(getmaxx-45, 50, 10); setfillstyle(1, yellow); floodfill(getmaxx-60, 50, green);} procedure start; begin count1:=0; count2:=0; x:=30;kiirusx:=1; y:=100;kiirusy:=1; kx:=35;rx:=600; ky:=4;ry:=395; kaivitagraafika;setup; field; SetTextStyle(DefaultFont, HorizDir, 1); setcolor(red); outtextxy(20,465,'c-score'); outtextxy(150,465,'l-levels'); outtextxy(300,465,'esc-exit'); end; procedure go1; begin field; SetTextStyle(DefaultFont, HorizDir, 1); setcolor(red); outtextxy(20,465,'c-score'); outtextxy(150,465,'l-levels'); outtextxy(300,465,'esc-exit'); end; procedure go2; begin count1:=0; count2:=0; x:=30;kiirusx:=1; y:=100;kiirusy:=1; kx:=35;rx:=600; ky:=4;ry:=395; kaivitagraafika; field; SetTextStyle(DefaultFont, HorizDir, 1); setcolor(red); outtextxy(20,465,'c-score'); outtextxy(150,465,'l-levels'); outtextxy(300,465,'esc-exit'); end; procedure stuk; begin sound(100);delay(100); sound(200); end; procedure muusik; begin sound(440); Delay(250); Nosound; delay(50); sound(440); Delay(250); Nosound; delay(50); sound(395); delay(250); Nosound; delay(50); sound(440); Delay(250); Nosound; delay(50); sound(350); Delay(250); Nosound; delay(50); sound(350); Delay(250); Nosound; delay(50); sound(350); Delay(500); Nosound; end; procedure score; begin setcolor(5); SetTextStyle(DefaultFont, HorizDir, 12); str(count1,tmp_string); outstring :=' '+tmp_string+' : '; str(count2,tmp_string); outstring := outstring + tmp_string; outtextxy(0,GetMaxY div 3,outstring); delay(1000); SetTextStyle(DefaultFont, HorizDir, 3); setcolor(red+blink); outtextxy(20,400,'press any key to continue'); readkey; cleardevice; go1; end; procedure lopp; begin cleardevice; SetTextStyle(DefaultFont, HorizDir, 2); setcolor(white); setbkcolor(black); outtextxy(50,150,'Do you whant play else, y/n ?'); if keypressed then s:=readkey; case s of 'y' : go2; 'n': halt; end;end; begin start; c:='a'; n:=5; repeat begin setcolor(green); move1(kx,ky); move2(rx,ry); if keypressed then begin c:=readkey; if c='c' then score; if c='l' then level; if (c=left1) and (kx>30) then kx:=kx-10; if (c=right1) and (kx<300) then kx:=kx+10; if (c=up1) and (ky>10) then ky:=ky-10; if (c=down1) and (ky<380) then ky:=ky+10; if (c=left2) and (rx>300) then rx:=rx-10; if (c=right2) and (rx<600) then rx:=rx+10; if (c=up2) and (ry>10) then ry:=ry-10; if (c=down2) and (ry<380) then ry:=ry+10; end; setcolor(white); move1(kx,ky); move2(rx,ry); if x<301 then if (yky+10) and (x>kx+5) and (x300 then if (yry+10) and (x>rx-10) and (x450 then begin kiirusy:=-abs(kiirusy); if y=449 then n:=n-trunc(n/2); end; if x<25 then kiirusx:=abs(kiirusx); if x>605 then kiirusx:=-abs(kiirusx); if (x=25) and (kiirusx=-abs(kiirusx)) then begin count2:=count2+1; muusik; score;End; if (x=605) and (kiirusx=abs(kiirusx)) then begin count1:=count1+1; muusik; score; end; if (count1=7) or (count2=7) then lopp; x:=x+kiirusx; y:=y+kiirusy; setcolor(white); kirjuta(x,y); delay(n); setcolor(green); kirjuta(x,y); end; until c=chr(27); textmode(lastmode); end.