asmodeus94

gra - niebezpieczna predkosc

Jan 27th, 2012
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 13.52 KB | None | 0 0
  1. program niebezpiecznaPredkosc;
  2. uses crt,dos;
  3. var tab:array [1..16,1..20] of char;
  4. przeszkoda:array [1..10,1..16,1..240] of char;
  5. idziesz,menu:char;
  6. i,j,poziom,nextlvl,liczbaPrzeszkod,zyje,wyborZyc,liczbaZyc,menuWybor,menuWybor2,menuWybor3,menuWybor4,
  7. licze,pauzaa,mozeszJeszczeRaz:byte;
  8. Hour,Min,Sec,HSec:word;
  9. czas,przechowujeJakisCzas,szybkosc,a,b,s:longint;
  10. label zdechl,dalej,powrotDoMenu,pauza,koniecPauzy;
  11. procedure wyswietl;
  12. var x,y:byte;
  13. begin
  14. for x:=2 to 15 do begin
  15.     for y:=1 to 20 do begin
  16.     tab[x,y]:=#176;
  17.     gotoxy(30+x,3+y);
  18.     tab[x,y]:=przeszkoda[poziom,x,y];
  19.     write(tab[x,y]);gotoxy(x+30,3+y)
  20.     end;
  21. end;end;
  22. procedure sciana;begin
  23.   for j:=1 to 20 do begin
  24.   tab[1,j]:=#178;
  25.   gotoxy(31,j+3);
  26.   write(tab[1,j]);
  27.   tab[16,j]:=#178;
  28.   gotoxy(46,j+3);
  29.   write(tab[16,j]);
  30.   end;end;
  31. procedure przeszkody;
  32. var x,y,z,czyPostawie:byte;
  33. begin randomize;
  34. for z:=1 to 10 do begin
  35.     for y:=1 to 240 do begin
  36.         for x:=2 to 15 do begin
  37.         przeszkoda[z,x,y]:=('°');
  38.         end;
  39.     end;
  40. end;
  41. for z:=1 to 10 do begin
  42.     for y:=21 to 220 do begin
  43.         for x:=2 to 15 do begin
  44.         czyPostawie:=random(5)+1;
  45.         if (czyPostawie=2)AND(przeszkoda[z,x,y]<>#178)AND(licze<liczbaPrzeszkod) then begin
  46.         licze:=licze+1;
  47.         przeszkoda[z,x,y]:=#178;end;
  48.         end;
  49.         licze:=0;
  50.     end;
  51. end;
  52. end;
  53. procedure ruchMapy;
  54. var x,y : byte;
  55. begin
  56. for x:=2 to 15 do begin
  57.     for y:=1 to 20 do begin
  58.         if tab[x,y]=#178 then
  59.         tab[x,y]:=#176;gotoxy(30+x,3+y);write(tab[x,y]);
  60.         end;
  61. end;
  62. for x:=2 to 15 do begin
  63.     for y:=a to b do begin
  64.     s:=s+1;
  65.        if przeszkoda[poziom,x,y]=#178 then begin
  66.        tab[x,s]:=przeszkoda[poziom,x,y];
  67.        gotoxy(30+x,s+3);write(tab[x,s]);
  68.        end;
  69.     end;
  70. s:=0;gotoxy(1,3);write('                      ');gotoxy(1,3);write('Stan zmiennej a: ',a);
  71. end;
  72. if a<2 then begin nextlvl:=1;end ELSE begin a:=a-1;b:=b-1;end;
  73. end;
  74. procedure sprawdzMnie;
  75. var x : byte;
  76.    begin
  77.    zyje:=0;
  78.       for x:=2 to 15 do begin
  79.         if tab[x,20]=#30 then zyje:=1;
  80.       end;
  81.    end;
  82. procedure ruch(i,j:byte);
  83.    begin
  84.    tab[i,j]:=#30;
  85.    gotoxy(30+i,3+j);write(tab[i,j]);
  86.    end;
  87. procedure lvl;
  88.    begin
  89.    gotoxy(35,1);write('Poziom: ',poziom);
  90.    end;
  91. procedure zycia;
  92.    begin
  93.    gotoxy(35,2);write('           ');
  94.    gotoxy(35,2);write('Zycia: ',liczbaZyc);
  95.    end;
  96. function obliczSzybkosc(poziom:byte):byte;
  97. begin
  98. obliczSzybkosc:=50-(poziom-1)*3;
  99. if poziom=1 then szybkosc:=obliczSzybkosc;
  100. end;
  101. procedure Timer;
  102. begin
  103. REPEAT
  104. GetTime(Hour,Min,Sec,Hsec);
  105. czas:=(3600*hour+60*Min+Sec)*1000+Hsec;
  106. IF przechowujeJakisCzas<=czas then begin
  107. przechowujeJakisCzas:=czas+szybkosc;
  108. ruchMapy;sprawdzMnie;
  109.    if nextlvl=1 then begin
  110.       poziom:=poziom+1;
  111.       if poziom=11 then begin gotoxy(31,24);textcolor(red);
  112.       write('Przeszedles cala gre');textcolor(7);przeszkody;poziom:=1;nextlvl:=0;delay(2000);goto zdechl;end;
  113.       a:=221;b:=240;
  114.       szybkosc:=obliczSzybkosc(poziom);{50-(poziom-1)*3;}lvl;
  115.       nextlvl:=0;
  116.    end;
  117. end;
  118. gotoxy(1,4);writeln('Czas kolejnego ruchu(',szybkosc,');');
  119. write('predkosc(',70-szybkosc,')');
  120. if zyje=0 then begin
  121. a:=221;b:=240;liczbaZyc:=liczbaZyc-1;zycia;zyje:=1;if liczbaZyc=0 then goto zdechl;
  122. gotoxy(31,24);textcolor(red);write('Straciles zycie');textcolor(7);ruchMapy;
  123. goto dalej;end;
  124. gotoxy(1,1);write(czas);gotoxy(3,24);write(wyborZyc,' Pod g masz cheat >nextlvl<');
  125. UNTIL keypressed;
  126. end;
  127. procedure instrukcja;
  128.    begin
  129.    TextBackGround(0);textcolor(7);writeln('');writeln('');TextBackGround(LightGray);textcolor(0);
  130.    gotoxy(6,1);writeln(#201#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#187);
  131.    gotoxy(6,2);write(#186, '                              ');textcolor(LightBlue); write('OPIS GRY');textcolor(0);writeln('                             ',#186);
  132.    gotoxy(6,3);writeln(#200#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#188); textcolor(7); TextBackGround(0);
  133.    TextBackGround(LightGray);textcolor(LightBlue);
  134.    gotoxy(6,4);writeln('         "Niebezpieczna Predkosc" - jest gra zreczniosciowa.         ');
  135.    gotoxy(6,5);writeln('      Fabula tej gry jest bardzo prosta. Siedzimy w samochodzie      ');
  136.    gotoxy(6,6);writeln(' z zablokowana predkoscia, nie mozemy ani hamowac ani przyspieszac.  ');
  137.    gotoxy(6,7);writeln('      Naszym zadaniem jest omijanie przeszkod. Wraz z nastepnymi     ');
  138.    gotoxy(6,8);writeln('   poziomami zwieksza sie predkosc pojazdu jak i ilosc przeszkod.    ');
  139.    gotoxy(6,9);writeln(' Zalezie od trudnosci mamy rozna ilosc zyc jak i zmienia sie gestosc ');
  140.    gotoxy(6,10);writeln('    przeszkod. Gra posiada lacznie 10 lvl, co po ich przejściu?      ');
  141.    gotoxy(6,11);writeln('     Dowiedz sie sam, skup sie to nie bedzie trasa wycieczkowa !     ');
  142.    gotoxy(6,12);writeln('                                                                     ');
  143.    TextBackGround(0);textcolor(7);writeln('');writeln('');TextBackGround(LightGray);textcolor(0);
  144.    gotoxy(25,14);writeln(#201#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#187);
  145.    gotoxy(25,15);write(#186, '        ');textcolor(LightBlue); write('KLAWISZOLOGIA');textcolor(0);writeln('         ',#186);
  146.    gotoxy(25,16);writeln(#200#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#188); textcolor(7); TextBackGround(0);
  147.    gotoxy(25,17);TextBackGround(LightGray);textcolor(LightBlue);writeln('        a - ruch w lewo         ');
  148.    gotoxy(25,18);writeln('        d - ruch w prawo        ');
  149.    gotoxy(25,19);writeln('        z - wyjscie             ');
  150.    gotoxy(25,20);writeln('        p - pauza               ');
  151.    gotoxy(8,22);writeln('       Kliknij dowolny klawisz aby wrocic do glownego menu       ');
  152.    gotoxy(8,24);writeln('                 Gre wykonal Konrad Rul klasa 2TG                ');textcolor(7); TextBackGround(0); TextBackGround(0);textcolor(7);
  153.    end;
  154. procedure pokazMenu(ktoreMenu:byte);
  155.    begin
  156.    REPEAT gotoxy(1,1);
  157.      case ktoreMenu of
  158.      1: begin
  159.      TextBackGround(LightGray);textcolor(0);writeln(#201#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#187);
  160.      write(#186, '    ');textcolor(LightBlue); write('NIEBEZPIECZNA PREDKOSC');textcolor(0);writeln('    ',#186);
  161.      writeln(#200#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#188); textcolor(7); TextBackGround(0);
  162.      menu:=readkey;
  163.      if (menu='w')OR(menu='W') then begin
  164.      if menuWybor<4 then menuWybor:=menuWybor+1;end;
  165.      if (menu='s')OR(menu='S') then begin
  166.      if menuWybor>1 then menuWybor:=menuWybor-1;end;
  167.      case menuWybor of
  168.      4: begin TextBackGround(LightGray);textcolor(LightBlue);writeln('   NOWA GRA');TextBackGround(0);textcolor(7);
  169.      writeln('POZIOM TRUDNOSCI   ');writeln('INSTRUKCJA   ');writeln('WYJDZ   ');end;
  170.      3: begin writeln('NOWA GRA   ');TextBackGround(LightGray);textcolor(LightBlue);
  171.      writeln('   POZIOM TRUDNOSCI');TextBackGround(0);textcolor(7);writeln('INSTRUKCJA   ');writeln('WYJDZ   ');end;
  172.      2: begin writeln('NOWA GRA   ');writeln('POZIOM TRUDNOSCI   ');
  173.      TextBackGround(LightGray);textcolor(LightBlue);writeln('   INSTRUKCJA');TextBackGround(0);textcolor(7);writeln('WYJDZ   ');end;
  174.      1: begin writeln('NOWA GRA   ');writeln('POZIOM TRUDNOSCI   ');
  175.      writeln('INSTRUKCJA   ');TextBackGround(LightGray);textcolor(LightBlue);writeln('   WYJDZ');TextBackGround(0);textcolor(7);end;
  176.    end;end;
  177.      2: begin
  178.      TextBackGround(LightGray);textcolor(0);writeln(#201#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#187);
  179.       write(#186, '       ');textcolor(LightBlue); write('POZIOM TRUDNOSCI');textcolor(0);writeln('       ',#186);
  180.       writeln(#200#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#188); textcolor(7); TextBackGround(0);
  181.       menu:=readkey;
  182.       if (menu='W')OR(menu='w') then begin
  183.       if menuWybor2<4 then menuWybor2:=menuWybor2+1;end;
  184.       if (menu='S')OR(menu='s') then begin
  185.       if menuWybor2>1 then menuWybor2:=menuWybor2-1;end;
  186.    case menuWybor2 of
  187.    4: begin TextBackGround(LightGray);textcolor(LightBlue);writeln('   PROSTY');TextBackGround(0);textcolor(7);writeln('NORMALNY   ');writeln('TRUDNY   ');writeln(#174,' GLOWNE MENU   ');end;
  188.    3: begin writeln('PROSTY   ');TextBackGround(LightGray);textcolor(LightBlue);writeln('   NORMALNY');TextBackGround(0);textcolor(7);writeln('TRUDNY   ');writeln(#174, ' GLOWNE MENU   ');end;
  189.    2: begin writeln('PROSTY   ');writeln('NORMALNY   ');TextBackGround(LightGray);textcolor(LightBlue);writeln('   TRUDNY');TextBackGround(0);textcolor(7);writeln(#174, ' GLOWNE MENU   ');end;
  190.    1: begin writeln('PROSTY   ');writeln('NORMALNY   ');writeln('TRUDNY   ');TextBackGround(LightGray);textcolor(LightBlue);writeln('   ', #174, ' GLOWNE MENU');TextBackGround(0);textcolor(7);end;
  191.    end;end;
  192.      3: begin
  193.      TextBackGround(LightGray);textcolor(LightBlue);writeln('     Czy chcesz zagrac jeszcze raz?    ');TextBackGround(0);textcolor(7);
  194.      menu:=readkey;
  195.      if (menu='W')OR(menu='w') then begin
  196.      if menuWybor3<2 then menuWybor3:=menuWybor3+1;end;
  197.      if (menu='S')OR(menu='s') then begin
  198.      if menuWybor3>1 then menuWybor3:=menuWybor3-1;end;
  199.    case menuWybor3 of
  200.    2: begin TextBackGround(LightGray);textcolor(LightBlue);writeln('   TAK');TextBackGround(0);textcolor(7);writeln('NIE   ');end;
  201.    1: begin textcolor(7);writeln('TAK   ');TextBackGround(LightGray);textcolor(LightBlue);writeln('   NIE');TextBackGround(0);textcolor(7);end;end;end;
  202.    4: begin
  203.    menu:=readkey;
  204.    gotoxy(1,2);
  205.    if (menu='s')OR(menu='S') then begin
  206.    if menuWybor4<10 then menuWybor4:=menuWybor4+1;end;
  207.    if (menu='w')OR(menu='W') then begin
  208.    if menuWybor4>1 then menuWybor4:=menuWybor4-1;end;
  209.    for a:=1 to 10 do begin
  210.        if menuWybor4 = a then begin
  211.        TextBackGround(LightGray);textcolor(LightBlue);writeln(a);TextBackGround(0);textcolor(7);poziom:=menuWybor4;
  212.        end ELSE begin writeln(a);end;
  213.    end;gotoxy(1,1);end;
  214.    end;
  215.    UNTIL menu=#13; end;
  216. begin clrscr;
  217. REPEAT
  218.    {config}
  219.    a:=221;b:=240;poziom:=1;szybkosc:=50;liczbaPrzeszkod:=4;wyborZyc:=6;
  220.    {..config} powrotDoMenu:clrscr;menuWybor:=4;
  221.    TextBackGround(LightGray);textcolor(0);writeln(#201#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#187);
  222.    write(#186, '  ');textcolor(LightBlue); write('   POZIOM TRUDNOSCI   ');textcolor(0);writeln('  ',#186);
  223.    writeln(#200#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#188); textcolor(7); TextBackGround(0);
  224.    TextBackGround(LightGray);textcolor(LightBlue);writeln('   NOWA GRA');TextBackGround(0);textcolor(7);writeln('POZIOM TRUDNOSCI');writeln('INSTRUKCJA');write('WYJDZ');
  225.    pokazMenu(1);if menuWybor=1 then goto zdechl;clrscr;
  226.    if menuWybor=3 then begin
  227.      clrscr;menuWybor2:=4;writeln;writeln;
  228.      textcolor(green);writeln('POZIOM TRUDNOSCI');textcolor(7);
  229.      TextBackGround(LightGray);textcolor(LightBlue);writeln('   PROSTY');TextBackGround(0);textcolor(7);writeln('NORMALNY');writeln('TRUDNY');writeln(#174, ' GLOWNE MENU   ');
  230.      pokazMenu(2);
  231.      if menuWybor2=4 then begin liczbaPrzeszkod:=3;wyborZyc:=9;goto powrotDoMenu;end;
  232.      if menuWybor2=3 then begin liczbaPrzeszkod:=4;wyborZyc:=6;goto powrotDoMenu;end;
  233.      if menuWybor2=2 then begin liczbaPrzeszkod:=5;wyborZyc:=3;goto powrotDoMenu;end;
  234.      if menuWybor2=1 then goto powrotDoMenu;end;
  235.      if menuWybor=2 then begin instrukcja;
  236.         readkey;goto powrotDoMenu;end;
  237.      clrscr;
  238.      liczbaZyc:=wyborZyc;
  239.      przeszkody;
  240.      dalej:
  241.      sciana;zycia;lvl;
  242.      wyswietl;
  243.      i:=9;j:=20;
  244.      ruch(9,20);
  245.    REPEAT
  246.    timer;
  247.    if pauzaa=1 then begin pauza: gotoxy(37,24);textcolor(red);write('PAUZA');textcolor(7);
  248.    REPEAT idziesz:=readkey;UNTIL (idziesz='p')OR(idziesz='P');idziesz:='w';
  249.    goto koniecPauzy;end;
  250.    idziesz:=readkey;koniecPauzy:
  251.    gotoxy(31,24);write('                               ');
  252.    case idziesz of
  253.    'a','A': begin if tab[i-1,j]<>#178 then begin tab[i,j]:=#176;gotoxy(30+i,3+j);write(tab[i,j]);i:=i-1;ruch(i,j);end;end;
  254.    'd','D': begin if tab[i+1,j]<>#178 then begin tab[i,j]:=#176;gotoxy(30+i,3+j);write(tab[i,j]);i:=i+1;ruch(i,j);end;end;
  255.    'g': begin nextlvl:=1; end;
  256.    'p': begin goto pauza; end;
  257.    end;
  258.    UNTIL idziesz='z';
  259.    UNTIL idziesz='z';
  260.    zdechl:clrscr;
  261.    gotoxy(1,2);TextBackGround(LightGray);textcolor(LightBlue);writeln('   TAK');TextBackGround(0);textcolor(7);writeln('NIE   ');menuWybor3:=2;
  262.    Pokazmenu(3);
  263.    if menuWybor3=2 then begin a:=221;b:=240;liczbaZyc:=wyborZyc;mozeszJeszczeRaz:=mozeszJeszczeRaz+1;
  264.    if mozeszJeszczeRaz=3 then begin przeszkody;poziom:=1;mozeszJeszczeRaz:=0;end;obliczSzybkosc(poziom);clrscr;goto dalej;end;
  265.    if menuWybor3=1 then begin clrscr;write('Koniec gry'); end;
  266.    delay(2000);
  267. end.
Advertisement
Add Comment
Please, Sign In to add comment