Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Tetris_Ewelina_Rybczynska;
- uses Crt, Windows;
- type
- tablica = array [1..4] of integer;
- P_tablica =^tablica;
- wiersz = array [1..14] of integer;
- wiersze_klocki = array [1..16] of integer;
- klocek = array [1..4] of wiersze_klocki;
- wiersz_wszystkie_klocki = array [1..7] of klocek;
- var
- tetrion: array[1..24] of wiersz;
- ciekawostki: array[1..6] of string;
- poziom,wynik,wiersze:integer;
- aktualny, aktualny_kolor,aktualny_x,aktualny_y,aktualny_obrot:integer;
- nastepny,nastepny_kolor:integer;
- const
- wiersz1: array [1..14] of integer = (1,1,0,0,0,0,0,0,0,0,0,0,1,1);
- wiersz2: array [1..14] of integer = (1,1,1,1,1,1,1,1,1,1,1,1,1,1);
- wszystkie_klocki: array[1..7] of klocek=(
- ((1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0),
- (0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0),
- (0,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0),
- (0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0)),
- ((1,1,1,0,1,0,0,0,0,0,0,0,0,1,1,0),
- (1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0),
- (0,0,0,0,1,1,0,0,1,1,1,0,0,0,1,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),
- ((1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0),
- (0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0),
- (0,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),
- ((0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,0),
- (1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0),
- (0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),
- ((1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0),
- (0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0),
- (0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),
- ((1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0),
- (0,1,0,0,1,1,0,0,0,1,0,0,0,1,1,0),
- (0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),
- ((1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0),
- (1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
- (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)));
- procedure wysrodkuj_tekst(s:string);
- var dlugosc:byte;
- begin
- dlugosc:=(80-Length(s)) div 2;
- GotoXY(dlugosc,WhereY);
- writeln(s);
- end;
- procedure narysuj_ramke(x1,y1,x2,y2:integer);
- var i:integer;
- begin
- GotoXY(x1,y1); write(#218);
- GotoXY(x1,y2); write(#192);
- GotoXY(x2,y1); write(#191);
- GotoXY(x2,y2); write(#217);
- for i:=x1+1 to x2-1 do
- begin
- GotoXY(i,y1); write(#196);
- GotoXY(i,y2); write(#196);
- end;
- for i:=y1+1 to y2-1 do
- begin
- GotoXY(x1,i); write(#179);
- GotoXY(x2,i); write(#179);
- end;
- end;
- procedure nowa_gra forward;
- procedure menu forward;
- procedure gotowy forward;
- procedure wypisz_plansze forward;
- procedure wynik_koncowy;
- begin
- ClrScr;
- TextBackground(0);
- TextAttr := $0f;
- GotoXY(22,2); write('Zdobyte punkty: ');
- GotoXY(39,2); write(wynik);
- GotoXY(22,4); TextAttr := $0c; write('G ');
- GotoXY(24,4); TextAttr := $0e; write('R ');
- GotoXY(26,4); TextAttr := $0a; write('A ');
- GotoXY(28,4); TextAttr := $0b; write('T ');
- GotoXY(30,4); TextAttr := $0d; write('U ');
- GotoXY(32,4); TextAttr := $0c; write('L ');
- GotoXY(34,4); TextAttr := $0e; write('A ');
- GotoXY(36,4); TextAttr := $0a; write('C ');
- GotoXY(38,4); TextAttr := $0b; write('J ');
- GotoXY(40,4); TextAttr := $0d; write('E ');
- GotoXY(42,4); TextAttr := $0c; write('! ');
- Delay(3000);
- ClrScr;
- end;
- procedure powitanie;
- begin
- clrscr;
- TextAttr:=$0e;
- GotoXY(5,2); writeln('_|_|_|_|_|');
- GotoXY(5,3); writeln(' _| ');
- GotoXY(5,4); writeln(' _| ');
- GotoXY(5,5); writeln(' _| ');
- GotoXY(5,6); writeln(' _| ');
- TextAttr:=$0c;
- GotoXY(17,2); writeln('_|_|_|_|');
- GotoXY(17,3); writeln('_| ');
- GotoXY(17,4); writeln('_|_|_| ');
- GotoXY(17,5); writeln('_| ');
- GotoXY(17,6); writeln('_|_|_|_|');
- TextAttr:=$0d;
- GotoXY(27,2); writeln('_|_|_|_|_|');
- GotoXY(27,3); writeln(' _| ');
- GotoXY(27,4); writeln(' _| ');
- GotoXY(27,5); writeln(' _| ');
- GotoXY(27,6); writeln(' _| ');
- TextAttr:=$0b;
- GotoXY(39,2); writeln('_|_|_| ');
- GotoXY(39,3); writeln('_| _|');
- GotoXY(39,4); writeln('_|_|_| ');
- GotoXY(39,5); writeln('_| _|');
- GotoXY(39,6); writeln('_| _|');
- TextAttr:=$0a;
- GotoXY(49,2); writeln('_|_|_|');
- GotoXY(49,3); writeln(' _| ');
- GotoXY(49,4); writeln(' _| ');
- GotoXY(49,5); writeln(' _| ');
- GotoXY(49,6); writeln('_|_|_|');
- TextAttr:=$09;
- GotoXY(57,2); writeln(' _|_|_| ');
- GotoXY(57,3); writeln('_| ');
- GotoXY(57,4); writeln(' _|_| ');
- GotoXY(57,5); writeln(' _|');
- GotoXY(57,6); writeln('_|_|_| ');
- TextAttr:=$0f;
- writeln; writeln;
- GotoXY(25,9);write('Ewelina Rybczynska');
- GotoXY(22,11); write('Wstep do Informatyki 2015');
- delay(2000);
- ClrScr;
- end;
- procedure podaj_imie;
- var
- imie_gracza:string;
- F:Text;
- begin
- GotoXY(35,2); TextAttr := $0c; write('T ');
- GotoXY(37,2); TextAttr := $0e; write('E ');
- GotoXY(39,2); TextAttr := $09; write('T ');
- GotoXY(41,2); TextAttr := $0a; write('R ');
- GotoXY(43,2); TextAttr := $0b; write('I ');
- GotoXY(45,2); TextAttr := $0d; write('S ');
- TextAttr := $0c;
- narysuj_ramke(30,4,50,10);
- TextAttr := $0f; GotoXY(32,5); write('Podaj swoje imie:');
- writeln;
- GotoXY(35,7); read(imie_gracza);
- Assign(F, 'plik.txt');
- Rewrite(F);
- WriteLn(F, imie_gracza);
- Close(F);
- ClrScr;
- GotoXY(20,3); write('Witaj'); GotoXY(26,3); write(imie_gracza);
- write(', zagrajmy w Tetrisa!');
- Windows.Beep(294,200);
- Windows.Beep(330,200);
- Windows.Beep(349,200);
- Windows.Beep(392,200);
- Windows.Beep(440,200);
- Windows.Beep(494,200);
- Windows.Beep(523,200);
- Delay(2000);
- ClrScr;
- end;
- procedure plansza_tetrion;
- var
- i:integer;
- begin
- for i:=1 to 24 do
- if (i<23) then tetrion[i]:=wiersz1
- else tetrion[i]:=wiersz2;
- for i:=1 to 22 do
- begin
- GotoXY(2,i+1); TextAttr := $f0;
- if i<23 then
- write(' ');
- end;
- end;
- procedure gotowy;
- begin
- TextAttr:=$0e; narysuj_ramke(1,1,12,24);
- TextBackground(0);
- TextAttr:=$0f;
- GotoXY(2,3); write('Gotowy?');
- Delay(1000);
- GotoXY(2,3); TextAttr:=$ff; write(' ');
- TextBackground(0);
- TextAttr:=$0f;
- GotoXY(2,3); write('Za chwile ');
- GotoXY(2,4); write('rozpocznie');
- GotoXY(2,5); write('sie gra.');
- Delay(2000);
- end;
- procedure tytul;
- begin
- TextAttr := $09; narysuj_ramke(13,1,33,3);
- GotoXY(18,2); TextAttr := $0c; write('T ');
- GotoXY(20,2); TextAttr := 13; write('E ');
- GotoXY(22,2); TextAttr := $0e; write('T ');
- GotoXY(24,2); TextAttr := $0a; write('R ');
- GotoXY(26,2); TextAttr := $0b; write('I ');
- GotoXY(28,2); TextAttr := $0d; write('S ');
- end;
- procedure instrukcja;
- begin
- TextAttr := $0a; narysuj_ramke(13,4,33,11);
- TextAttr := $0f;
- GotoXY(14,5); write('Instrukcja gry:');
- GotoXY(14,6); write('w gore - obrot');
- GotoXY(14,7); write('prawo/lewo - ruch');
- GotoXY(14,8); write('w dol - oposc');
- GotoXY(14,9); write('spacja - pauza');
- GotoXY(14,10); write('escape - koniec gry');
- end;
- procedure punkty_poziom;
- begin
- TextAttr := $0b; narysuj_ramke(13,12,33,18);
- TextAttr := $0f;
- GotoXY(14,13); write(' PUNKTACJA:');
- GotoXY(14,15); write(' Wynik:', wynik:7);
- GotoXY(14,17); write(' Poziom:', poziom:6);
- end;
- procedure ciekawostka;
- var
- x:integer;
- begin
- TextAttr := $0d; narysuj_ramke(13,19,62,24);
- TextAttr := $0f;
- GotoXY(16,20); write('Czy wiesz, ze...');
- ciekawostki[1]:='klocki spadajace w grze nazywane sa tetrimino?';
- ciekawostki[2]:='plansza nazywana jest tetrionem lub matriksem?';
- ciekawostki[3]:='gra powstala w Zwiazku Radzieckim w roku 1984?';
- ciekawostki[4]:='autorem gry jest Rosjanin Aleksieja Pazytnowa?';
- ciekawostki[5]:='w Tetrisa obecnia gra sie w ponad 50 krajach?';
- ciekawostki[6]:='nazwa gry tetris pochodzi od slowa tetra (4)?';
- randomize;
- x:=random(6)+1;
- TextAttr := $0f;
- GotoXY(15,22); write(ciekawostki[x]);
- end;
- procedure nastepny_klocek;
- var
- i,j,k: integer;
- nastepne_tetrimino: wiersze_klocki;
- begin
- TextAttr:=$0e; narysuj_ramke(34,1,51,10);
- TextAttr:=$0f;
- GotoXY(35,2); write('Nastepny klocek:');
- for k:=4 to 9 do begin
- TextAttr := $ff;
- GotoXY(35,k);
- write(' ');
- end;
- for i:=1 to 4 do
- begin
- GotoXY(41,4+i); nastepne_tetrimino:=wszystkie_klocki[nastepny][i];
- for j:=1 to 4 do
- if nastepne_tetrimino[j]=1 then
- begin
- TextAttr:=nastepny_kolor;
- TextColor(16); write('_');
- end
- else
- begin
- TextAttr:=255; write(' ');
- end;
- end;
- end;
- procedure klocki;
- var
- i,j:integer;
- tetrimino: wiersze_klocki;
- begin
- narysuj_ramke(52,1,62,18);
- GotoXY(53,2);
- TextAttr:=$0f; write('Klocki:');
- for i:=1 to 4 do
- begin
- GotoXY(53,3+i); tetrimino:=wszystkie_klocki[1][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*5;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(53,5+i); tetrimino:=wszystkie_klocki[2][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*7;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(53,8+i); tetrimino:=wszystkie_klocki[3][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*6;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(53,11+i); tetrimino:=wszystkie_klocki[4][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*3;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(58,3+i); tetrimino:=wszystkie_klocki[5][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*4;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(58,6+i); tetrimino:=wszystkie_klocki[6][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*2;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- end;
- for i:=1 to 4 do
- begin
- GotoXY(58,9+i); tetrimino:=wszystkie_klocki[7][i];
- for j:=1 to 4 do
- if tetrimino[j]=1 then
- begin
- TextAttr:=16*9;
- TextColor(0); write('_');
- end
- else
- begin
- TextAttr:=0; write(' ');
- end;
- TextAttr:=$0f;
- GotoXY(53,15); write('Klocki');
- GotoXY(53,16); write('mozna');
- GotoXY(53,17); write('obracac!');
- end;
- end;
- procedure do_menu;
- begin
- TextAttr := $0c; narysuj_ramke(34,11,51,18);
- TextAttr := $0f;
- GotoXY(35,12); write('Aby powrocic');
- GotoXY(35,14); write('do MENU nacisnij');
- GotoXY(35,16); write('klawisz m.');
- end;
- procedure losowania;
- begin
- randomize;
- aktualny:=nastepny;
- aktualny_kolor:=nastepny_kolor;
- nastepny:=1+random(7);
- nastepny_kolor:=1+random(15)*16;
- if nastepny_kolor =1 then nastepny_kolor := 16;
- nastepny_klocek;
- aktualny_x:=6; aktualny_y:=1; aktualny_obrot:=1;
- end;
- function kopiuj(wszystkie_klocki: wiersz_wszystkie_klocki; faza,wiersz,nr_klocka:integer):P_tablica;
- var
- i,j: integer;
- P:P_tablica;
- begin
- New(P);
- i:=1;
- for j:=faza to faza+3 do begin
- P^[i]:= wszystkie_klocki[nr_klocka][wiersz][j];
- i:=i+1;
- end;
- kopiuj:=P;
- end;
- function czy_kolizja(klocek,obrot,x,y:integer):boolean;
- var
- i,j:integer;
- rodzaj_klocka: tablica;
- begin
- for i:=1 to 4 do
- begin
- rodzaj_klocka:=kopiuj(wszystkie_klocki,1+4*(obrot-1),i,klocek)^;
- for j:=1 to 4 do
- if((rodzaj_klocka[j]<>0) and (tetrion[y+i-1][x+j-1]<>0)) then
- begin
- Result:=true;
- Exit;
- end;
- end;
- Result:=false;
- end;
- procedure wyswietl_klocek(true_false:boolean);
- var
- i,j:integer;
- rodzaj_klocka: tablica;
- begin
- if true_false then begin
- TextAttr:=aktualny_kolor;
- TextColor(16);
- end
- else
- TextAttr:=$ff;
- for i:=1 to 4 do
- begin
- rodzaj_klocka:=kopiuj(wszystkie_klocki,1+4*(aktualny_obrot-1),i,aktualny)^;
- for j:=1 to 4 do
- if rodzaj_klocka[j] <> 0 then
- begin
- GotoXY(aktualny_x+j-2, aktualny_y+i);
- write ('_');
- end;
- end;
- end;
- procedure w_lewo;
- begin
- if not czy_kolizja(aktualny,aktualny_obrot,aktualny_x-1,aktualny_y) then
- begin
- wyswietl_klocek(false);
- dec(aktualny_x);
- wyswietl_klocek(true);
- end;
- end;
- procedure w_prawo;
- begin
- if not czy_kolizja(aktualny,aktualny_obrot,aktualny_x+1,aktualny_y) then
- begin
- wyswietl_klocek(false);
- inc(aktualny_x);
- wyswietl_klocek(true);
- end;
- end;
- procedure obroc_klocek;
- var
- x_obrot:integer;
- begin
- x_obrot:=aktualny_obrot+1;
- if (x_obrot>4) then
- x_obrot:=1;
- if not czy_kolizja(aktualny,x_obrot,aktualny_x,aktualny_y) then
- begin
- wyswietl_klocek(false);
- aktualny_obrot:=x_obrot;
- wyswietl_klocek(true);
- end;
- end;
- function w_dol:boolean;
- begin
- if not czy_kolizja(aktualny,aktualny_obrot,aktualny_x,aktualny_y+1) then
- begin
- wyswietl_klocek(false);
- inc(aktualny_y);
- wyswietl_klocek(true);
- Result:=true;
- end
- else Result:=false;
- end;
- procedure uzupelnij_plansze;
- var
- i,j:integer;
- rodzaj_klocka: tablica;
- begin
- for i:=1 to 4 do
- begin
- rodzaj_klocka:=kopiuj(wszystkie_klocki,1+4*(aktualny_obrot-1),i,aktualny)^;
- for j:=1 to 4 do
- if rodzaj_klocka[j]=1 then
- tetrion[aktualny_y+i-1][aktualny_x+j-1]:=aktualny_kolor;
- end;
- wypisz_plansze;
- end;
- procedure wypisz_plansze;
- var
- i,j:integer;
- begin
- GotoXY(2,2);
- for i:=1 to 24 do begin
- for j:=1 to 14 do
- begin
- if tetrion[i][j] = 0 then
- begin
- TextAttr := $f0; write(' ');
- end
- else if ((tetrion[i][j] <> 0) and (tetrion[i][j] <> 1)) then
- begin
- TextAttr := tetrion[i][j]; TextColor(16); write('_');
- end;
- end;
- GotoXY(2,2+i);
- end;
- end;
- function takie_same(i:integer):boolean;
- var
- j:integer;
- begin
- for j:=1 to 14 do
- begin
- if tetrion[i][j] = 0 then
- begin
- Result:=False;
- break;
- end;
- Result:=True;
- end;
- end;
- function puste(i:integer):boolean;
- var
- j:integer;
- begin
- for j:=1 to 14 do
- begin
- if tetrion[i][j] <> 0 then
- begin
- Result:=False;
- break;
- end;
- Result:=True;
- end;
- end;
- function pusta_plansza:boolean;
- var
- j:integer;
- begin
- for j:=1 to 14 do
- begin
- if not puste(j) then
- begin
- Result:=False;
- break;
- end;
- Result:=True;
- end;
- end;
- procedure usun_wiersze;
- var
- i,j,licznik_wierszy:integer;
- begin
- licznik_wierszy:=0;
- i:= 22;
- j:= 22;
- while i>0 do
- begin
- if takie_same(i) then
- begin
- inc(licznik_wierszy);
- Windows.Beep(1000,200);
- Windows.Beep(1200,200);
- Windows.Beep(1400,200);
- for j:=i downto 2 do
- tetrion[j]:= tetrion[j-1];
- tetrion[1]:= wiersz1;
- wypisz_plansze;
- end
- else dec(i);
- end;
- if pusta_plansza then inc(wynik, 10000);
- case licznik_wierszy of
- 1: inc(wynik,50);
- 2: inc(wynik,150);
- 3: inc(wynik,300);
- 4: inc(wynik,600);
- end;
- inc(wiersze,licznik_wierszy);
- if wiersze>25 then
- begin
- wiersze:=wiersze-25;
- inc(wynik,1000);
- if (poziom<9) then
- begin
- inc(poziom);
- ciekawostka;
- Windows.Beep(1000,200);
- Windows.Beep(1200,200);
- Windows.Beep(1400,200);
- Windows.Beep(1600,200);
- Windows.Beep(1800,200);
- Windows.Beep(2000,200);
- TextAttr:=$0c;
- TextColor(0);
- TextBackGround(15);
- GotoXY(3,3); write('Nastepny');
- GotoXY(3,4); write('poziom!');
- Delay(1000);
- TextAttr:=$ff;
- GotoXY(3,3); write(' ');
- GotoXY(3,4); write(' ');
- end;
- end;
- end;
- procedure upusc_klocek;
- begin
- if w_dol then
- begin
- inc(wynik);
- punkty_poziom;
- Delay(4);
- end;
- end;
- function brak_miejsca:boolean;
- var
- c:char;
- lc,li:integer;
- begin
- if czy_kolizja(aktualny,aktualny_obrot,aktualny_x,aktualny_y) then
- begin
- wyswietl_klocek(true);
- Result:=true;
- end
- else
- begin
- lc:=100-10*(poziom-1);
- li:=lc;
- wyswietl_klocek(true);
- repeat
- if Keypressed then
- begin
- repeat c:=ReadKey; until c <> #0;
- case c of
- #109:begin
- Result:=true;
- Exit;
- TextBackGround(0);
- menu;
- end;
- #27:begin
- Result:=true; Exit;
- end;
- #32: while ReadKey <> #32 do;
- #75: w_lewo;
- #77: w_prawo;
- #72: obroc_klocek;
- #80: upusc_klocek;
- end;
- end;
- Dec(li); Delay(4);
- if li=0 then
- begin
- li:=lc;
- if not w_dol then
- begin
- uzupelnij_plansze; usun_wiersze;
- inc(wynik,5);
- punkty_poziom;
- break;
- end;
- end;
- until false;
- Result:=false;
- end;
- end;
- procedure wyswietl_plansze;
- begin
- randomize;
- nastepny:=random(7)+1;
- nastepny_kolor:=2+random(15)*16;
- tytul;
- instrukcja;
- punkty_poziom;
- klocki;
- ciekawostka;
- nastepny_klocek;
- do_menu;
- gotowy;
- plansza_tetrion;
- end;
- procedure tetris;
- begin
- wyswietl_plansze;
- plansza_tetrion;
- repeat
- losowania;
- until brak_miejsca;
- while KeyPressed do
- begin
- ReadKey;
- Delay(100);
- end;
- end;
- function koniec_gry : boolean;
- var
- znak:char;
- begin
- ClrScr;
- TextBackground(0);
- wynik_koncowy;
- TextAttr:=$0c ;narysuj_ramke(10,2,69,6);
- GotoXY(1,3);
- TextAttr:=$0f; wysrodkuj_tekst('Czy chcesz zagrac jeszcze raz?');
- writeln;
- TextAttr:=$0f;
- wysrodkuj_tekst('Jezeli tak nacisnij znak t a jezeli nie nacisnij znak n.');
- repeat
- znak:=readkey;
- until ((znak='t') or (znak='n'));
- case znak of
- 't' : begin
- ClrScr;
- nowa_gra;
- end;
- 'n' : begin
- ClrScr;
- menu;
- end;
- end;
- ClrScr;
- end;
- procedure nowa_gra;
- var
- x:integer;
- begin
- ClrScr;
- poziom:=1;
- wynik:=0;
- Randomize;
- x:=TextAttr;
- CursorOff;
- repeat
- tetris;
- until koniec_gry;
- TextAttr:=x;
- CursorOn;
- ClrScr;
- end;
- procedure zasady_gry;
- var
- znak:char;
- begin
- TextAttr := $0f;
- GotoXY(30,2); TextAttr := $0c; write('Z ');
- GotoXY(32,2); TextAttr := $0b; write('A ');
- GotoXY(34,2); TextAttr := $0e; write('S ');
- GotoXY(36,2); TextAttr := $0a; write('A ');
- GotoXY(38,2); TextAttr := $09; write('D ');
- GotoXY(40,2); TextAttr := $0d; write('Y ');
- GotoXY(43,2); TextAttr := $0e; write('G ');
- GotoXY(45,2); TextAttr := $0a; write('R ');
- GotoXY(47,2); TextAttr := $0c; write('Y ');
- writeln;
- writeln;
- TextAttr := $0f;
- wysrodkuj_tekst('Twoim zadaniem jest ukladanie spadajacych klockow.');
- wysrodkuj_tekst('Klocki mozesz obracac za pomoca klawiszy strzalek.');
- wysrodkuj_tekst('Jezeli wypelnisz caly wiersz kolckami, otrzymasz punkt.');
- wysrodkuj_tekst('Przegrasz gdy cala planasza bedzie zapelniona klockami.');
- writeln;
- wysrodkuj_tekst('Powodzenia!');
- writeln;
- writeln;
- wysrodkuj_tekst('Nacisnij klawisz g, zeby przejsc do gry.');
- writeln;
- wysrodkuj_tekst('Nacisnij klawisz m jezeli chcesz wrocic do menu.');
- repeat
- znak:=readkey;
- until ((znak='g') or (znak='m'));
- case znak of
- 'g' : begin
- ClrScr;
- nowa_gra;
- end;
- 'm' : begin
- ClrScr;
- menu;
- end;
- end;
- end;
- procedure menu;
- var
- znak:char;
- begin
- ClrScr;
- TextBackground(black);
- GotoXY(19,3); TextAttr := $0c; write('T ');
- GotoXY(22,3); TextAttr := $0d; write('E ');
- GotoXY(25,3); TextAttr := $0e; write('T ');
- GotoXY(28,3); TextAttr := $0c; write('R ');
- GotoXY(31,3); TextAttr := $0a; write('I ');
- GotoXY(34,3); TextAttr := $09; write('S ');
- TextAttr := $0d; narysuj_ramke(16,5,37,23);
- GotoXY(24,6); TextAttr := $0c; write('M ');
- GotoXY(26,6); TextAttr := $0b; write('E ');
- GotoXY(28,6); TextAttr := $0e; write('N ');
- GotoXY(30,6); TextAttr := $0a; write('U ');
- TextAttr := $09; narysuj_ramke(17,8,36,12);
- GotoXY(21,10); TextAttr := $0f; write('1. nowa gra');
- TextAttr := $09; narysuj_ramke(17,13,36,17);
- GotoXY(21,15); TextAttr := $0f; write('2. zasady gry');
- TextAttr := $09; narysuj_ramke(17,18,36,22);
- GotoXY(21,20); TextAttr := $0f; write('3. wyjscie');
- repeat
- znak:=readkey;
- until ((znak='1') or (znak='2') or (znak='3'));
- case znak of
- '1' : begin
- ClrScr;
- nowa_gra;
- end;
- '2' : begin
- ClrScr;
- zasady_gry;
- end;
- '3' : exit;
- end;
- end;
- begin
- powitanie;
- podaj_imie;
- menu;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement