|
|
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_05c2f6
└─⟦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 0x2176b9b78895c81e50c24 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 ┆ , ┆