|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 10240 (0x2800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Base, seg_05c2ed
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Bd_Jeu; with Services; with Gen; use Gen; with Solide; with Maitre; package body Base is Nb : Integer := 0; type T_Base; type A_Base is access T_Base; type Internal is record Mon_Solide : Solide.Objet; T : A_Base; end record; package Bd_Base is new Bd_Jeu (Solide => Objet, No_Solide => null); task type T_Base is entry Creer (Mon_Solide : in Solide.Objet); entry Collision (Tiers : in Gen.Tgenre; Fin : out Boolean); entry Top (Fin : out Boolean; Tiers : out Gen.Tgenre; Position : out Gen.Tposition); entry Detruire; end T_Base; task body T_Base is Moi : Solide.Objet; Loc_Tiers : Gen.Tgenre := Gen.Non_Objet; Loc_Fin, En_Vie : Boolean := True; Changement : Integer := 3; procedure Traiter_Collision (Tiers : in Gen.Tgenre; Fin : out Boolean) is begin case Tiers is when Gen.Tir | Gen.Asteroide => Fin := True; when Gen.Vaisseau => Solide.Vider (Le_Solide => Moi, Energie => Maitre.Energie_Ravitaillement); if Solide.Vide (Le_Solide => Moi) then Fin := True; else Fin := False; end if; when Gen.Base | Gen.Non_Objet => Fin := False; end case; end Traiter_Collision; begin accept Creer (Mon_Solide : in Solide.Objet) do Moi := Mon_Solide; end Creer; while En_Vie loop if Changement > 0 then Solide.Afficher (Le_Solide => Moi); Changement := Changement - 1; end if; select accept Collision (Tiers : in Gen.Tgenre; Fin : out Boolean) do Traiter_Collision (Tiers => Tiers, Fin => Loc_Fin); Fin := Loc_Fin; Changement := 3; end Collision; or accept Top (Fin : out Boolean; Tiers : out Gen.Tgenre; Position : out Gen.Tposition) do Position := Gen.Position_Nulle; Tiers := Gen.Non_Objet; Fin := False; end Top; or accept Detruire do Solide.Detruire (Le_Solide => Moi); En_Vie := False; end Detruire; end select; end loop; end T_Base; function Creer (Position : in Gen.Tposition; Energie : in Gen.Tenergie) return Objet is Loc_Base : Objet := new Internal; begin Nb := Nb + 1; Loc_Base.Mon_Solide := Solide.Creer (Un_Solide => Loc_Base, Position => Position, Energie => Energie, Figure => 'B'); Loc_Base.T := new T_Base; Bd_Base.Inserer (Le_Solide => Loc_Base, No => Nb); Loc_Base.T.Creer (Mon_Solide => Loc_Base.Mon_Solide); return Loc_Base; end Creer; procedure Top (La_Base : in Objet; Fin : out Boolean; Tiers : out Gen.Tgenre; Position : out Gen.Tposition) is begin La_Base.T.Top (Fin => Fin, Tiers => Tiers, Position => Position); end Top; procedure Collision (La_Base : in Objet; Tiers : in Gen.Tgenre; Fin : out Boolean) is begin La_Base.T.Collision (Tiers => Tiers, Fin => Fin); end Collision; procedure Detruire (La_Base : in out Objet) is begin Bd_Base.Retirer (Le_Solide => La_Base); La_Base.T.Detruire; La_Base := null; end Detruire; procedure Initialiser is Une_Base : Objet; Position : Gen.Tposition; begin Position.X := 1; Position.Y := Maitre.Last_Y - 1; Une_Base := Creer (Position => Position, Energie => Maitre.Energie_Base); end Initialiser; procedure Traiter is begin null; end Traiter; procedure Terminer is Une_Base : Objet; begin Bd_Base.Init; Une_Base := Bd_Base.Prendre; while Une_Base /= null loop Base.Detruire (La_Base => Une_Base); Une_Base := Bd_Base.Prendre; end loop; end Terminer; end Base;
nblk1=9 nid=5 hdr6=c [0x00] rec0=23 rec1=00 rec2=01 rec3=068 [0x01] rec0=1c rec1=00 rec2=07 rec3=020 [0x02] rec0=19 rec1=00 rec2=06 rec3=016 [0x03] rec0=14 rec1=00 rec2=08 rec3=048 [0x04] rec0=23 rec1=00 rec2=04 rec3=060 [0x05] rec0=06 rec1=00 rec2=02 rec3=000 [0x06] rec0=23 rec1=00 rec2=04 rec3=004 [0x07] rec0=0c rec1=00 rec2=05 rec3=000 [0x08] rec0=39 rec1=8f rec2=00 rec3=008 tail 0x2176b9af0895c81d99e68 0x42a00088462060003 Free Block Chain: 0x5: 0000 00 03 01 06 80 0e 20 20 65 6e 64 20 50 72 65 6e ┆ end Pren┆ 0x3: 0000 00 09 00 3e 80 11 69 6f 6e 20 3d 3e 20 50 6f 73 ┆ > ion => Pos┆ 0x9: 0000 00 00 00 09 80 06 6f 6e 5f 54 69 72 06 00 1d 20 ┆ on_Tir ┆