{można przesuwać kwadrat można zmieniać jego wymiary losowo generowane są przeszkody sprawdzanie wejścia na przeszkodę sprawdzanie końca gry} program gra; uses crt,graph; {prostokatna pilka o dlugosci sciany i kolorze} procedure pilka(x,y,dx,dy,kolor:integer); begin setcolor(kolor); line(x,y,x+dx,y); line(x+dx,y,x+dx,y+dy); line(x+dx,y+dy,x,y+dy); line(x,y+dy,x,y); end; {losowane rysowanie przeszkód} procedure losowanie(ax,ay,ile:integer); var i,x,y,dx,dy:integer; begin for i:=1 to ile do begin x:=random(640); y:=random(480); dx:=random(ax); dy:=random(ay); {żeby nic nie narysowało w rogach} if not(((x<ax+20) and (y<ay+20)) or ((x>620-ax) and (y>460-ay))) then pilka(x,y,dx,dy,14); end; end; {sygnał dzwiękowy} procedure beep; var i:integer; begin Sound(150); Delay(1000); NoSound; end; var d,m:integer; i,ile, {ilość prpstokątów} xp,yp,dxp,dyp,kp:integer; {dane pilki} dotyka, {sprawdzanie czy kwadrat dotyka przeszkód} koniec:boolean; {kiedy koniec gierki} znak:char; {jaki znak na klawiaturze} {początek programu} begin d:=detect; initgraph(d,m,''); {randomize;} {wspolrzedne pilki} xp:=0; yp:=0; dxp:=50; dyp:=50; kp:=13; ile:=100; losowanie(dxp,dyp,ile); koniec:=false; repeat {rysowanie} pilka(xp,yp,dxp,dyp,kp); {wstrzymanie} delay(10); {wymazanie} pilka(xp,yp,dxp,dyp,0); {sprawdzanie klawiatury-gdy nacisnieto jakis klawisz} if keypressed then begin {odczytanie klawisza-kod klawisza w zmiennen znak} znak:=readkey; {gdy to byl kod kursora to czytamy kolejny znak bo pierwszy ma kod 0} if znak=#0 then znak:=readkey; case znak of 'H':if yp>1 then yp:=yp-1;{kod kursora gora} 'P':if yp<479-dyp then yp:=yp+1;{kod kursora dol} 'M':if xp<639-dxp then xp:=xp+1;{kod kursora w prawo} 'K':if xp>1 then xp:=xp-1;{kod kursora w lewo} #27:koniec:=true;{kod klawisza ESC} 'd','w':if dyp>5 then begin dxp:=dxp+1; dyp:=dyp-1 end; {szer+ wys-} 'a','s':if dxp>5 then begin dxp:=dxp-1; dyp:=dyp+1 end; {szer- wys+} end; {case} {oczyszczamy bufor klawiatury zeby nie piszczalo} while keypressed do znak:=readkey; end; {badanie klawiatury} {gdy dotknie przeszkody to koniec} dotyka:=false; {sprzadzamy wszystkie piksele kwadratu czy nie wlazło na piksela o kolorze 14} for i:=xp to xp+dxp do begin if getpixel(i,yp)=14 then dotyka:=true; if getpixel(i,yp+dyp)=14 then dotyka:=true; end; for i:=yp to yp+dyp do begin if getpixel(xp,i)=14 then dotyka:=true; if getpixel(xp+dxp,i)=14 then dotyka:=true; end; if dotyka then {a tu koniec gdy dotyka} begin beep; koniec:=true end; {gdy dojdzie do prawego dolnego roku to koniec} if (xp+dxp=639) and (yp+dyp=479) then begin beep; koniec:=true end; until koniec; closegraph; end.{koniec pogramu}