
 /* Adt.h : Abstrakte Datentypen */

 /* Farbe: */
#define weiss 0
#define schwarz 8
typedef int Farbe;

 /* Figur: */
#define wbauer 1
#define wspringer 2
#define wlaeufer 3
#define wturm 4
#define wdame 5
#define wkoenig 6
#define sbauer 9
#define sspringer 10
#define slaeufer 11
#define sturm 12
#define sdame 13
#define skoenig 14
#define leer 16
#define bauer 1
#define springer 2
#define laeufer 3
#define turm 4
#define dame 5
#define koenig 6
#define farbmask 24
#define figmask 7
typedef int Figur;

 /* Feld: */
#define yposmask 15
typedef int Feld;

 /* Special: */
#define wkroch 0x0100
#define wlroch 0x0200
#define skroch 0x1000
#define slroch 0x2000
#define wroch 0x0300
#define sroch 0x3000
#define epmask 0x00ff
typedef int Special;

 /* Zug: */
struct Zug {
    Figur figur;
    Feld start;
    Feld ziel;
};

 /* Zugstat: */
struct Zugstat {
    struct Zug zug;
    long knoten;
    long zeit;
    int wertung;
};

 /* Knoten: */
struct Knoten {
    struct Zug zug;
    struct Knoten *nachbar;
    struct Knoten *nachfolger;
    int zugwertung;
};

 /* Ereignis: */
#define zugs 0
#define ende 1
struct Ereignis {
    int ereignistyp;
    struct Zug zug;
};
