home *** CD-ROM | disk | FTP | other *** search
- { ************************** Program Hvezda ***************************** }
- { Ne v¿echny objekty musí bÿt zrovna obdélníky a jeden z p⌐íkladû ukazuje }
- { hvêzdu. Ta bêhá furt dokola na povel od çasovaçe. Konec programu hlídá }
- { jinÿ objekt v jiné frontê na p⌐eru¿ení z klávesnice. Opêt je efektní }
- { nechat v pamêti jako rezident (çasem je to k vzteku) }
-
- {$A-,B-,D+,E+,F-,G+,I+,L+,N-,O-,S+,V+,X+}
- {$M 16384,50000,50000}
- uses Obraz3D, Unhejb, Unkriz, Untimer, Unfront, Crt, Dos;
- type Typ_Muj = object(Typ_Hvezda)
- procedure Vm0;virtual;
- procedure Vm1;virtual;
- end;
-
- Typ_Konec = object(Typ_Hejbaci)
- procedure Vm0; virtual;
- end;
-
- var Koncit : Boolean;
-
- procedure Typ_Muj.Vm0; { zvêt¿í hvêzdu }
- begin Zhasni; Inc(_Velikost); Zobraz; end;
-
- procedure Typ_Muj.Vm1; { zmen¿í hvêzdu }
- begin Zhasni; Dec(_Velikost); Zobraz; end;
-
- procedure Typ_Konec.Vm0; { nastaví promênnou konec }
- begin Koncit := True end;
-
- const Cesta : array[1..117+6+6]of Typ_Instrukce =
- ( R,R,R,R,R,R,R,R,R,R,{ 10x pohyb vpravo }
- Rep,3, { následující 3 instrukce se provedou najednou }
- Vm0, { VM0, tj. zmêna velikosti - viz vÿ¿e }
- Scoa, Blue, { zmêna barvy objektu na modrou }
- R,R,R,R,R,R,R,R,R,R,Rep,2,Vm1, { ... atd. }
- R,R,R,R,R,R,R,R,R,R,Rep,3,Vm0,Scoa,Green,
- D,D,D,D,D,D,D,D,D,D,Rep,2,Vm1,
- L,L,L,L,L,L,L,L,L,L,Rep,3,Vm0,Scoa,White,
- L,L,L,L,L,L,L,L,L,L,Rep,2,Vm1,
- L,L,L,L,L,L,L,L,L,L,Rep,2,Vm1,
- U,U,U,U,U,U,U,U,U,U,Rep,3,Vm0,
- Scoa,Yellow,Spra,10,Scoa,Black,Spra,3,
- Scoa,White,Spra,3,Scoa,Green,Spra,3,
- Jmpa, 0, { skok na zaçátek cesty }
- Endc); { konec cesty }
-
- const Kon_Cesta : array[1..2]of Typ_Instrukce = (Vm0, Endc);
-
- var Hvezda : Typ_Muj; { tento objekt se bude hÿbat }
- Odchod : Typ_Konec; { tento objekt zajistí odchod }
- Klapka : Typ_Hejb_Fronta_Intr; { tato fronta bude na p⌐eru¿ení z klávesnice }
-
- begin
- Koncit := False;
-
- Hvezda.Init;
- Odchod.Init; {inicializace obou objektû }
- Hvezda.Presun(15,6,0);
-
- Hvezda.Vytvor(2,13,'0'); { vytvo⌐ení tvaru hvêzdy }
- Hvezda.Zobraz; { zobrazení hvêzdy }
- Hvezda.Hejbej(Cesta);
-
- __Timer.Zarad_Prvek(Hvezda); { za⌐azení do seznamu __timer }
-
- Klapka.Init($09, True); { klapka je napojena na p⌐eru¿ení z klávesnice }
-
- Odchod.Hejbej(Kon_Cesta);
- Klapka.Zarad_Prvek(Odchod);
-
- __Timer.On; { zapnutí p⌐eru¿ení do çasové fronty }
- Klapka.On; { totéæ z klávesnice }
-
- repeat until Koncit; { çekání na stisk tlaçítka, kterÿ ovlivní }
- { promênnou Koncit }
-
- { Máte rádi Reset ? Staçí vodundat následující závorky a je to. }
- { Keep(0); }
-
- { A nakonec úklid smetí }
- __Timer.Off;
- Klapka.Off;
-
- Hvezda.Zrus;
- Odchod.Zrus;
-
- Konec;
- end.
-