|
|
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: 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 ┆