DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦e91fc128c⟧ Ada Source

    Length: 13312 (0x3400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Le_Jeu, seg_05c2f6

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



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;

E3 Meta Data

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