Hra had ako ju poznate z mobilnych telefonov

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: KMP (Club of young programmers)

Author: Werbhofen
Program: Python2.pasKniznica.pasData.pas
File exe: Python2.exe

Hra had ako ju poznate z mobilnych telefonov.
{ PYTHON.PAS                                                        }
{                                                                   }
{ Author: WERBHOFEN                                                 }
{ Datum: 12.10.2009                            http://www.trsek.com }
 
PROGRAM Python; (* 10.9.2009 *)
USES Crt,Kniznica;
CONST FarbaOkraj=2;
      FarbaHad=6;
      FarbaPozadie=0;
      FarbaText=14;
 
      MaxDlzkaHada=30;  (* dlzka hada pri ktorej hra definitivne konci - vyhrou *)
      PocetKociek=7;    (* kolko kociek treba zobrat pri prvej hre *)
 
      X1=1; X2=60;      (* okraje hracej plochy *)
      Y1=1; Y2=25;
 
      NovyZivot=1000;   (* Kolko bodov treba nazbierat aby sa pridal 1 zivot navyse *)
      oneskorenie:byte=100;
      KoniecProgramu:boolean=false;
      zvuky:boolean=true;
 
TYPE THad=array[1..MaxDlzkaHada]of TInt2D;
 
VAR i,StarySmer,level,BodyPreNovyZivot:integer;
    smer,DlzkaHada,life:byte;
    g:char;
    prehra,KoniecHry,KoniecKola:boolean;
    score,HighScore:integer;
    f:file;
    had:THad;
    Bod:TInt2D;
 
{$I Data.pas}
 
BEGIN
  randomize;
  DelicKmitoctu;
 
  if ParamStr(1)='0' then zvuky:=false; (* druhy parameter zapina/vypina zvuky *)
 
  assign(f,'score.dat'); (* nacita hi-score z externeho suboru *)
  {$I-} reset(f); {$I+}
  if IOResult<>0
    then HighScore:=0      (* subor neexistuje/dajaka chyba *)
    else begin             (* vsjo jasno *)
      BlockRead(f,HighScore,1);
      close(f);
    end;
 
  repeat
    UvodnaObrazovka;
    level:=1;
    life:=3;
    score:=0;
    BodyPreNovyZivot:=0;
    DlzkaHada:=3;
    kraj;
    KoniecHry:=false;  (* spustenie novej hry *)
    while (not KoniecProgramu) and (not KoniecHry) do begin
      smer:=2;  (* zaciatocny smer pohybu *)
      i:=0;
      repeat    (* zaciatocne suradnice hada *)
        had[DlzkaHada-i].x:=30-i;
        had[DlzkaHada-i].y:=12;
        i:=i+1;
      until i=DlzkaHada;
      kraj;
      NovyBod;
      g:=#0;
      DlzkaHada:=3;      (* zaciatocna dlzka hada *)
      KoniecKola:=false;
      prehra:=false;
      repeat
        NoveKolo;
      until KoniecHry or KoniecKola or KoniecProgramu;
    end;
  until KoniecProgramu;
 
  ReWrite(f);          (* zapise novu hodnotu hi-score do externeho suboru *)
  BlockWrite(f,HighScore,1);
  Close(f);
END.