home *** CD-ROM | disk | FTP | other *** search
/ Prima Shareware 3 / DuCom_Prima-Shareware-3_cd1.bin / PROGRAMO / PASCAL / HEJB / EXAM / HVEZDA.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-04-21  |  3.0 KB  |  89 lines

  1. { ************************** Program Hvezda ***************************** }
  2. { Ne v¿echny objekty musí bÿt zrovna obdélníky a jeden z p⌐íkladû ukazuje }
  3. { hvêzdu. Ta bêhá furt dokola na povel od çasovaçe. Konec programu hlídá  }
  4. { jinÿ objekt v jiné frontê na p⌐eru¿ení z klávesnice. Opêt je efektní    }
  5. { nechat v pamêti jako rezident (çasem je to k vzteku)                    }
  6.  
  7. {$A-,B-,D+,E+,F-,G+,I+,L+,N-,O-,S+,V+,X+}
  8. {$M 16384,50000,50000}
  9. uses Obraz3D, Unhejb, Unkriz, Untimer, Unfront, Crt, Dos;
  10. type Typ_Muj = object(Typ_Hvezda)
  11.                  procedure Vm0;virtual;
  12.                  procedure Vm1;virtual;
  13.                end;
  14.  
  15.      Typ_Konec = object(Typ_Hejbaci)
  16.                    procedure Vm0; virtual;
  17.                  end;
  18.  
  19. var Koncit : Boolean;
  20.  
  21. procedure Typ_Muj.Vm0; { zvêt¿í hvêzdu }
  22. begin Zhasni; Inc(_Velikost); Zobraz; end;
  23.  
  24. procedure Typ_Muj.Vm1; { zmen¿í hvêzdu }
  25. begin Zhasni; Dec(_Velikost); Zobraz; end;
  26.  
  27. procedure Typ_Konec.Vm0; { nastaví promênnou konec }
  28. begin Koncit := True end;
  29.  
  30. const Cesta : array[1..117+6+6]of Typ_Instrukce =
  31.    ( R,R,R,R,R,R,R,R,R,R,{ 10x pohyb vpravo }
  32.      Rep,3,              { následující 3 instrukce se provedou najednou }
  33.      Vm0,                { VM0, tj. zmêna velikosti - viz vÿ¿e }
  34.      Scoa, Blue,         { zmêna barvy objektu na modrou }
  35.      R,R,R,R,R,R,R,R,R,R,Rep,2,Vm1, { ... atd. }
  36.      R,R,R,R,R,R,R,R,R,R,Rep,3,Vm0,Scoa,Green,
  37.      D,D,D,D,D,D,D,D,D,D,Rep,2,Vm1,
  38.      L,L,L,L,L,L,L,L,L,L,Rep,3,Vm0,Scoa,White,
  39.      L,L,L,L,L,L,L,L,L,L,Rep,2,Vm1,
  40.      L,L,L,L,L,L,L,L,L,L,Rep,2,Vm1,
  41.      U,U,U,U,U,U,U,U,U,U,Rep,3,Vm0,
  42.      Scoa,Yellow,Spra,10,Scoa,Black,Spra,3,
  43.      Scoa,White,Spra,3,Scoa,Green,Spra,3,
  44.      Jmpa, 0,            { skok na zaçátek cesty }
  45.      Endc);              { konec cesty }
  46.  
  47. const Kon_Cesta : array[1..2]of Typ_Instrukce = (Vm0, Endc);
  48.  
  49. var Hvezda   : Typ_Muj;        { tento objekt se bude hÿbat }
  50.     Odchod   : Typ_Konec;      { tento objekt zajistí odchod }
  51.     Klapka   : Typ_Hejb_Fronta_Intr; { tato fronta bude na p⌐eru¿ení z klávesnice }
  52.  
  53. begin
  54.   Koncit := False;
  55.  
  56.   Hvezda.Init;
  57.   Odchod.Init;                  {inicializace obou objektû }
  58.   Hvezda.Presun(15,6,0);
  59.   
  60.   Hvezda.Vytvor(2,13,'0');      { vytvo⌐ení tvaru hvêzdy }
  61.   Hvezda.Zobraz;                { zobrazení hvêzdy }
  62.   Hvezda.Hejbej(Cesta);
  63.  
  64.   __Timer.Zarad_Prvek(Hvezda);  { za⌐azení do seznamu __timer }
  65.  
  66.   Klapka.Init($09, True);       { klapka je napojena na p⌐eru¿ení z klávesnice }
  67.  
  68.   Odchod.Hejbej(Kon_Cesta);
  69.   Klapka.Zarad_Prvek(Odchod);
  70.  
  71.   __Timer.On;            { zapnutí p⌐eru¿ení do çasové fronty }
  72.   Klapka.On;             { totéæ z klávesnice }
  73.  
  74.   repeat until Koncit;   { çekání na stisk tlaçítka, kterÿ ovlivní }
  75.                          { promênnou Koncit }
  76.  
  77.   { Máte rádi Reset ? Staçí vodundat následující závorky a je to. }
  78. {  Keep(0);  }
  79.  
  80.   { A nakonec úklid smetí }
  81.   __Timer.Off;
  82.   Klapka.Off;
  83.  
  84.   Hvezda.Zrus;
  85.   Odchod.Zrus;
  86.  
  87.   Konec;
  88. end.
  89.