|
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 - metrics - download
Length: 13312 (0x3400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Le_Jeu, seg_05c1a9
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Maitre; with Gen; with Solide; with Asteroide; with Tir; with Base; with Vaisseau; with Calendar; package body Le_Jeu is En_Initialisation : Boolean := True; Tir_En_Cours : array (1 .. Vaisseau.Max) of Boolean := (others => False); task Jeu is entry Commencer; entry Traiter_Caractere (C : in Character; No : in Integer); end Jeu; task body Jeu is Heure_Reveil : Calendar.Time; En_Vie : Boolean := True; Nb_Vaisseau : Integer; type Traison is (Exit_Maitre, Vainqueur, Match_Nul); Raison : Traison := Exit_Maitre; Traiter_Espace : Boolean := True; use Calendar; begin accept Commencer do Maitre.Init_Configuration; Base.Initialiser; Asteroide.Initialiser; Vaisseau.Initialiser; En_Initialisation := False; end Commencer; Heure_Reveil := Calendar.Clock + Maitre.Cycle_Base; while En_Vie loop select accept Traiter_Caractere (C : in Character; No : in Integer) do if (No = 1) and (C = '6') then Raison := Exit_Maitre; En_Vie := False; else Tir_En_Cours (No) := True; Vaisseau.Commander_Vaisseau (C => C, No => No); if Calendar.Clock > Heure_Reveil then Traiter_Espace := True; end if; Tir_En_Cours (No) := False; end if; end Traiter_Caractere; or delay Heure_Reveil - Calendar.Clock; Traiter_Espace := True; end select; if Traiter_Espace then Heure_Reveil := Calendar.Clock + Maitre.Cycle_Base; Traiter_Espace := False; Tir.Traiter; Base.Traiter; Asteroide.Traiter; Vaisseau.Traiter (Nb_Vaisseau => Nb_Vaisseau); if Nb_Vaisseau = 1 then Raison := Vainqueur; En_Vie := False; elsif Nb_Vaisseau = 0 then Raison := Match_Nul; En_Vie := False; end if; end if; end loop; Tir.Terminer; Base.Terminer; Asteroide.Terminer; Vaisseau.Terminer; case Raison is when Exit_Maitre => Maitre.Terminer (Raison => "par arret de l'arbitre"); when Match_Nul => Maitre.Terminer (Raison => "car match nul"); when Vainqueur => Maitre.Terminer (Raison => "car vainqueur"); end case; end Jeu; procedure Traiter_Caractere (C : in Character; No : in Integer) is begin if En_Initialisation then Maitre.Repondre (C => C); elsif not Tir_En_Cours (No) then Jeu.Traiter_Caractere (C, No); end if; end Traiter_Caractere; procedure Commencer is begin Jeu.Commencer; end Commencer; end Le_Jeu;
nblk1=c nid=8 hdr6=8 [0x00] rec0=22 rec1=00 rec2=01 rec3=04e [0x01] rec0=16 rec1=00 rec2=0a rec3=04c [0x02] rec0=1c rec1=00 rec2=02 rec3=06e [0x03] rec0=0e rec1=00 rec2=09 rec3=000 [0x04] rec0=13 rec1=00 rec2=09 rec3=000 [0x05] rec0=1a rec1=00 rec2=03 rec3=016 [0x06] rec0=19 rec1=00 rec2=09 rec3=072 [0x07] rec0=18 rec1=00 rec2=08 rec3=038 [0x08] rec0=15 rec1=00 rec2=06 rec3=03e [0x09] rec0=16 rec1=00 rec2=0a rec3=000 [0x0a] rec0=15 rec1=00 rec2=02 rec3=001 [0x0b] rec0=07 rec1=00 rec2=00 rec3=000 tail 0x2176b68048959420108b2 0x42a00088462060003 Free Block Chain: 0x8: 0000 00 06 00 04 80 01 20 01 02 03 04 05 06 07 08 09 ┆ ┆ 0x6: 0000 00 03 01 2a 80 1d 20 20 20 20 20 69 66 20 54 69 ┆ * if Ti┆ 0x3: 0000 00 05 00 aa 80 0e 69 6e 65 20 28 22 31 30 5f 41 ┆ ine ("10_A┆ 0x5: 0000 00 07 01 0b 00 25 20 20 20 20 20 20 20 20 42 61 ┆ % Ba┆ 0x7: 0000 00 0c 00 85 80 08 20 65 6e 64 20 69 66 3b 08 00 ┆ end if; ┆ 0xc: 0000 00 04 00 f0 00 39 20 20 20 20 20 20 20 20 20 20 ┆ 9 ┆ 0x4: 0000 00 0b 00 25 80 01 3b 01 00 1e 20 20 20 20 20 20 ┆ % ; ┆ 0xb: 0000 00 00 00 d6 00 2c 20 20 20 20 20 20 20 20 20 20 ┆ , ┆