Das ATOS-Magazin 3/99
ATOS Programmierpraxis
Moderne Zeiten

# Endlich spielen

Wir dürfen diesen Artikel aber keinesfalls beenden, ohne unser Werk auszuprobieren! Schwierig kann das ja nun nicht sein. Wir legen zwei Mannschaften an (und entscheiden uns für den BVB mit der Mannschaftsstärke 40, sowie den FCH mit der Mannschaftsstärke 80) und lassen uns in einer Schleife alle Spieler und ihre Spielerstärken ausgeben. Abschließend wollen wir diese Mannschaften dann endlich gegeneinander antreten lassen -- fünfmal müsste genug sein, um zu sehen, ob der Simulator brauchbare Ergebnisse zustande bringt:

    @libs_init
    @typedef
    @fussball_test
    @otob_exit
    '
    PROCEDURE fussball_test
      '
      ' *** Mannschaften anlegen ***
      '
    fch:
      DATA Franz
      DATA Bert,Hugo,Sascha
      DATA Markus,Frank,Theo,Daniel
      DATA Matthias,Andreas,Jürgen
      '
    bvb:
      DATA Teddy
      DATA Gerhard,Jan,Christian
      DATA Stephan,Bodo,Pascal,Bobby
      DATA Patrick,Jonas,Uwe
      '
      RESTORE fch
      LET fch#=@verein("FC 08 Homburg",80)
      RESTORE bvb
      LET bvb#=@verein("BVB 09 Borussia Dortmund",40)
      '
      ' *** Spiel austragen ***
      '
      PRINT "Es spielt: ";@verein_name$(fch#);" gegen ";
                                       @verein_name$(bvb#);"!"
      PRINT
      PRINT "Die Aufstellungen:"
      PRINT
      PRINT USING "\........\ Tor Abw Mit Stu   \........\
                                       Tor Abw Mit Stu",
                                       @verein_name$(fch#),
                                       @verein_name$(bvb#)
      '
      FOR spieler%=0 TO 10
        '
        LET spieler1#=@verein_spieler(fch#,spieler%)
        LET tor1&=@fussballspieler_tor(spieler1#)
        LET abwehr1&=@fussballspieler_abwehr(spieler1#)
        LET mitte1&=@fussballspieler_mitte(spieler1#)
        LET sturm1&=@fussballspieler_sturm(spieler1#)
        '
        LET spieler2#=@verein_spieler(bvb#,spieler%)
        LET tor2&=@fussballspieler_tor(spieler2#)
        LET abwehr2&=@fussballspieler_abwehr(spieler2#)
        LET mitte2&=@fussballspieler_mitte(spieler2#)
        LET sturm2&=@fussballspieler_sturm(spieler2#)
        '
        PRINT USING "\........\ ### ### ### ###   \........\
                                       ### ### ### ###",
                                       @fussballspieler_name$(spieler1#),
                                       tor1&,abwehr1&,mitte1&,sturm1&,
                                       @fussballspieler_name$(spieler2#),
                                       tor2&,abwehr2&,mitte2&,sturm2&
        '
      NEXT spieler%
      PRINT
      '
      FOR i%=1 TO 5
        @fussballspiel(fch#,bvb#,fch_tore&,bvb_tore&)
        PRINT i%;".Spiel: Das Spiel endete ";fch_tore&;":";bvb_tore&;"!"
      NEXT i%
      '
      @verein_free(fch#)
      @verein_free(bvb#)
      '
    RETURN
    PROCEDURE typedef
      '
      @boolean_typedef
      @byte_typedef
      @word_typedef
      @card_typedef
      @long_typedef
      @float_typedef
      @string_typedef
      @memory_typedef
      @array_typedef
      @obtyp_typedef
      @link_typedef
      '
      @fussballspieler_typedef
      @verein_typedef
      '
    RETURN

Et voilá:

    Es spielt: FC 08 Homburg gegen BVB 09 Borussia Dortmund!

    Die Aufstellungen:

    FC 08 Homb Tor Abw Mit Stu   BVB 09 Bor Tor Abw Mit Stu
    Franz       71   2   1   0   Teddy       43   4   6   8
    Bert         3  70   8   3   Gerhard      4  40   1   4
    Hugo         4  70  21  17   Jan          7  37   0  10
    Sascha       2  77   3  15   Christian    5  36   0   7
    Markus       9  22  72  22   Stephan      5   2  39   5
    Frank        7  18  79  24   Bodo         6   9  34   7
    Theo         5  24  81   9   Pascal       9   5  32   1
    Daniel       6  22  72   4   Bobby        6   3  35   3
    Matthias     2  15  14  86   Patrick      1  12   4  31
    Andreas      7  18  24  82   Jonas        9   3   1  41
    Jürgen       1  21   2  71   Uwe          0   7  11  34

    1.Spiel: Das Spiel endete 1:0!
    2.Spiel: Das Spiel endete 3:0!
    3.Spiel: Das Spiel endete 2:1!
    4.Spiel: Das Spiel endete 4:1!
    5.Spiel: Das Spiel endete 5:1!

80:40 war wohl doch recht eindeutig ... `;-)`

Ausblick