Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Mühlespiel

Projektzusammenfassung
Projekt-Maintainer:MitgliedALWIM Projektseite angelegt:30.07.2015
Lizenzierung:WTFPL Letzte Bearbeitung:13.10.2024
Projektkategorie:Spiele      [Zurück zur Übersicht]

Mühlebrett:
Mühlebrett

Mühle
Vergrößern
Mühle

Spielsteine
Weißer Stein Schwarzer Stein


#INCLUDE ONCE "WINDOWS.BI"
#INCLUDE ONCE "win\COMMDLG.BI"
#INCLUDE "file.bi"

DECLARE SUB MENUFELD (XXX AS INTEGER, YYY AS INTEGER, XXXX AS INTEGER, YYYY AS INTEGER, FARBEN AS INTEGER)
DECLARE SUB BUTTON (XXX AS INTEGER, YYY AS INTEGER, XXXX AS INTEGER, YYYY AS INTEGER)


DECLARE SUB SPIELFELD
DECLARE SUB SPIELSTAND
DECLARE SUB MENU
DECLARE SUB RUECKSETZEN
DECLARE SUB GUELTIGEZUEGE
DECLARE SUB ANZAHLMUEHLEN
DECLARE SUB PRUEFEMUEHLE


DIM SHARED AS ANY PTR Spielfeldpuffer, Steinpuffer, SteinpufferWeiss, SteinpufferSchwarz

DIM SHARED AS INTEGER mausx, mausy, mausk
DIM SHARED AS INTEGER i, j, k, a = 25, Feld(0 TO 24), gesperrteMuehle(0 TO 24, 0 TO 2), FeldAlt, muehle, Remiszaehler, Zugzaehler, Stellungswiederholung, AmZug(0 TO 200000)

DIM SHARED AS INTEGER X(A) , Y(A), XX(A), YY(A), SX(A), SY(A), gueltige(A), ZugHilfeX(A), ZugHilfeY(A), XXX, XXXX, YYY, YYYY
DIM SHARED AS INTEGER Tastensperre(0 TO 9), whandle, Farben

DIM SHARED AS STRING filename, tasten, Stellung(0 TO 200000), StellungAlt(0 TO 200000)

DIM f AS INTEGER = FREEFILE

RANDOMIZE TIMER


TYPE Teilnehmer
    dran AS INTEGER ' 0 = nicht am Zug, 1 = am Zug
    COMPUTER AS INTEGER ' 0 = kein Computer, 1 = Computer
    aktiv AS INTEGER ' 0 = Spieler inaktiv, 1 = Spieler aktiv
    Steine AS INTEGER ' Anzahl der Steine
    SetzSteine AS INTEGER ' Anzahl Steine zum Setzen
    Status AS INTEGER ' 0 = Setzphase, 1 = Zugphase, 2 = Springphase, -1 = Partieende
    Muehle AS INTEGER ' 0 = keine Mühle, 1 = eine Mühle, 2 = zwei Mühlen
END TYPE

DIM SHARED Spieler(0 TO 2) AS Teilnehmer

TYPE Spielzustand
    ' ZugWeiß AS INTEGER ' 0 = nicht am Zug, 1 = am Zug
    ' ZugSchwarz AS INTEGER ' 0 = nicht am Zug, 1 = am Zug
    SpielphaseWeiss AS INTEGER ' 0 = Setzphase, 1 = Zugphase, 2 = Springphase, -1 = Partieende
    SpielphaseSchwarz AS INTEGER ' 0 = Setzphase, 1 = Zugphase, 2 = Springphase, -1 = Partieende
    AnzahlSteineWeiss AS INTEGER ' Anzahl der Steine
    AnzahlSteineSchwarz AS INTEGER ' Anzahl der Steine
    SetzSteineWeiss AS INTEGER ' Anzahl der Steine zum Setzen
    SetzSteineSchwarz AS INTEGER ' Anzahl der Steine zum Setzen
END TYPE

DIM SHARED Zustand(0 TO 200000) AS Spielzustand


/'
FOR i = 1 TO 2
    SPIELER(i).Computer = 0
    SPIELER(i).aktiv = 0
    SPIELER(i).Steine = 9
    SPIELER(i).SetzSteine = 9
    SPIELER(i).Status = 0
NEXT
Spieler(1).dran = 1 ' Weiß beginnt
Spieler(2).dran = 0
FeldAlt = 0
Remiszaehler = 0
Stellungswiederholung = 0

StellungAlt(0) = "Grundstellung"
'/

' muehle = FALSE

Tastensperre(1) = FALSE
Tastensperre(2) = FALSE
Tastensperre(3) = FALSE
Tastensperre(4) = FALSE
Tastensperre(5) = FALSE
Tastensperre(6) = FALSE
Tastensperre(7) = FALSE
Tastensperre(8) = FALSE
Tastensperre(9) = FALSE

' Koordinaten laden
filename = "Button.txt"
IF FILEEXISTS(filename) THEN
    OPEN "Button.txt" FOR INPUT AS #f
    A = 1
    DO UNTIL EOF(f)
        INPUT #f, X(A), XX(A), Y(A), YY(A), SX(A), SY(A), ZugHilfeX(A), ZugHilfeY(A)
        A += 1
    LOOP
    CLOSE #f
ELSE
    END
END IF



SCREENRES 800, 640, 32
COLOR &h000000, &hC8C8C8
' COLOR &hFFFFFF, &hC8C8C8


' CLS

RUECKSETZEN ' alles auf 0 setzen
SPIELFELD ' Spielfeld zeichnen

MENUFELD 520, 10, 620, 30, &hC8C8C8
MENUFELD 625, 10, 645, 30, &hC8C8C8
MENUFELD 650, 10, 670, 30, &hC8C8C8

LOCATE 3,67: PRINT "Neue Partie"
LOCATE 3,80: PRINT "<"
LOCATE 3,83: PRINT ">"

DO
    ' IF SPIELER(1).Computer = 0 AND SPIELER(1).Dran = 1 THEN Zug = TRUE ELSE Zug = FALSE
    ' IF SPIELER(2).Computer = 0 AND SPIELER(2).Dran = 1 THEN Zug = TRUE ELSE Zug = FALSE

    GETMOUSE mausx, mausy,, mausk
    SELECT CASE mausk
        CASE 1
            IF Tastensperre(1) = 0 THEN A += 1
            IF A > 24 THEN A = 1
            SELECT CASE mausx
                CASE X(A) TO XX(A)
                    SELECT CASE mausy
                        CASE Y(A) TO YY(A)


                            ' Steine setzen
                            IF SPIELER(1).Status = 0 OR SPIELER(2).Status = 0 THEN
                                IF Tastensperre(1) = 0 THEN
                                    IF Spieler(1).Muehle = 0 THEN
                                        IF SPIELER(1).dran = 1 AND Spieler(1).SetzSteine > 0 AND Feld(A) = 0 THEN
                                            Feld(A) = 1
                                            SPIELER(1).SetzSteine -= 1
                                            SPIELFELD
                                            PRUEFEMUEHLE
                                            IF SPIELER(1).Muehle = 0 THEN
                                                SPIELER(1).dran = 0
                                                SPIELER(2).dran = 1
                                                Remiszaehler += 1
                                                Zugzaehler += 1
                                                AmZug(Zugzaehler) = 2
                                                SPIELSTAND
                                            END IF
                                        END IF
                                    END IF
                                    IF Spieler(2).Muehle = 0 THEN
                                        IF SPIELER(2).dran = 1 AND SPIELER(2).SetzSteine > 0 AND Feld(A) = 0 THEN
                                            Feld(A) = 2
                                            SPIELER(2).SetzSteine -= 1
                                            SPIELFELD
                                            PRUEFEMUEHLE
                                            IF SPIELER(2).Muehle = 0 THEN
                                                SPIELER(2).dran = 0
                                                SPIELER(1).dran = 1
                                                Remiszaehler += 1
                                                Zugzaehler += 1
                                                AmZug(Zugzaehler) = 1
                                                SPIELSTAND
                                            END IF
                                        END IF
                                    END IF
                                END IF
                                Tastensperre(1) = 1
                            END IF


                            ' Steine schlagen - Setzmodus
                            IF SPIELER(1).SetzSteine < 1 AND SPIELER(1).Status = 0 AND SPIELER(1).Muehle = 0 THEN SPIELER(1).Status = 1
                            IF SPIELER(2).SetzSteine < 1 AND SPIELER(2).Status = 0 AND SPIELER(2).Muehle = 0 THEN SPIELER(2).Status = 1
                            IF Tastensperre(2) = 0 THEN
                                IF Spieler(1).Muehle > 0 AND SPIELER(1).Status = 0 THEN
                                    IF SPIELER(1).dran = 1 AND Feld(A) = 2 THEN
                                        j = 0
                                        FOR i = 1 TO 24
                                            IF gesperrteMuehle(i, 2) = 1 THEN j += 1
                                        NEXT
                                        IF gesperrteMuehle(A, 2) = 0 OR (SPIELER(2).Steine-SPIELER(2).SetzSteine) = j THEN
                                            Feld(A) = 0
                                            SPIELER(2).Steine -= 1
                                            SPIELER(1).Muehle -= 1
                                            Remiszaehler = 0
                                            PRUEFEMUEHLE
                                            SPIELFELD
                                            IF Spieler(1).Muehle < 1 THEN Zugzaehler += 1: AmZug(Zugzaehler) = 2: SPIELSTAND
                                        END IF
                                        IF SPIELER(1).Muehle < 1 THEN SPIELER(1).dran = 0: SPIELER(2).dran = 1: AmZug(Zugzaehler) = 2
                                        IF SPIELER(1).Muehle < 1 AND SPIELER(2).Status > 0 THEN FeldAlt = 0
                                    END IF
                                END IF
                                IF Spieler(2).Muehle > 0 AND SPIELER(2).Status = 0 THEN
                                    IF SPIELER(2).dran = 1 AND Feld(A) = 1 THEN
                                        j = 0
                                        FOR i = 1 TO 24
                                            IF gesperrteMuehle(i, 1) = 1 THEN j += 1
                                        NEXT
                                        IF gesperrteMuehle(A, 1) = 0 OR (SPIELER(1).Steine-SPIELER(1).SetzSteine) = j THEN
                                            Feld(A) = 0
                                            Spieler(1).Steine -= 1
                                            SPIELER(2).Muehle -= 1
                                            Remiszaehler = 0
                                            PRUEFEMUEHLE
                                            SPIELFELD
                                            IF Spieler(2).Muehle < 1 THEN Zugzaehler += 1: AmZug(Zugzaehler) = 1: SPIELSTAND
                                        END IF
                                        IF SPIELER(2).Muehle < 1 THEN SPIELER(2).dran = 0: SPIELER(1).dran = 1: AmZug(Zugzaehler) = 1: SPIELSTAND
                                        IF SPIELER(2).Muehle < 1 AND SPIELER(2).Status > 0 THEN FeldAlt = 0
                                    END IF
                                END IF
                            END IF
                            Tastensperre(2) = 1

                            ' Steine ziehen - Weiß
                            IF SPIELER(1).Status > 0 THEN

                                ' Stein auswählen - Weiß
                                IF Tastensperre(3) = 0 AND SPIELER(1).Muehle = 0 THEN
                                    IF SPIELER(1).dran = 1 AND Feld(A) = 1 AND FeldAlt = 0 THEN
                                        FeldAlt = A
                                        GUELTIGEZUEGE

                                        CIRCLE ((XX(A)-((XX(A)-X(A))/2-1)), (YY(A)-((YY(A)-Y(A))/2-1))), 25, &h00FFFF ' &hFFFFAA
                                        CIRCLE ((XX(A)-((XX(A)-X(A))/2-1)), (YY(A)-((YY(A)-Y(A))/2-1))), 26, &h00FFFF ' &hFFFFAA

                                        ' mögliche Züge anzeigen
                                        FOR i = 1 TO 24
                                            IF gueltige(i) = 1 AND Feld(i) = 0 THEN CIRCLE (ZugHilfeX(i), ZugHilfeY(i)), 12, &hFFFFAA,,,, F
                                        NEXT
                                    END IF
                                END IF
                                Tastensperre(3) = 1

                                ' Zielfeld auswählen - Weiß
                                IF Tastensperre(4) = 0 AND SPIELER(1).Muehle = 0 THEN
                                    GUELTIGEZUEGE
                                    IF gueltige(A) = 1 THEN
                                        IF SPIELER(1).dran = 1 AND Feld(A) = 0 AND FeldAlt <> 0 THEN
                                            Feld(FeldAlt) = 0
                                            Feld(A) = 1
                                            FeldAlt = 0
                                            SPIELFELD
                                            PRUEFEMUEHLE
                                            IF SPIELER(1).Muehle = 0 THEN
                                                SPIELER(1).dran = 0
                                                SPIELER(2).dran = 1
                                                Remiszaehler += 1
                                                Zugzaehler += 1
                                                AmZug(Zugzaehler) = 2
                                                SPIELSTAND
                                            END IF
                                        END IF
                                    END IF
                                END IF
                                Tastensperre(4) = 1
                            END IF

                            ' Steine ziehen - Schwarz
                            IF SPIELER(2).Status > 0 THEN
                                ' Stein auswählen - Schwarz
                                IF Tastensperre(5) = 0 AND SPIELER(2).Muehle = 0 THEN
                                    IF SPIELER(2).dran = 1 AND Feld(A) = 2 AND FeldAlt = 0 THEN
                                        FeldAlt = A
                                        GUELTIGEZUEGE

                                        CIRCLE ((XX(A)-((XX(A)-X(A))/2-1)), (YY(A)-((YY(A)-Y(A))/2-1))), 25, &h00FFFF' &hFFFFAA
                                        CIRCLE ((XX(A)-((XX(A)-X(A))/2-1)), (YY(A)-((YY(A)-Y(A))/2-1))), 26, &h00FFFF' &hFFFFAA

                                        ' mögliche Züge anzeigen
                                        FOR i = 1 TO 24
                                            IF gueltige(i) = 1 AND Feld(i) = 0 THEN CIRCLE (ZugHilfeX(i), ZugHilfeY(i)), 12, &hFFFFAA,,,, F
                                        NEXT
                                    END IF
                                END IF
                                Tastensperre(5) = 1

                                ' Zielfeld auswählen - Schwarz
                                IF Tastensperre(6) = 0 AND SPIELER(2).Muehle = 0 THEN
                                    GUELTIGEZUEGE
                                    IF gueltige(A) = 1 THEN
                                        IF SPIELER(2).dran = 1 AND Feld(A) = 0 AND FeldAlt <> 0 THEN
                                            Feld(FeldAlt) = 0
                                            Feld(A) = 2
                                            FeldAlt = 0
                                            SPIELFELD
                                            PRUEFEMUEHLE
                                            IF SPIELER(2).Muehle = 0 THEN
                                                SPIELER(1).dran = 1
                                                SPIELER(2).dran = 0
                                                Remiszaehler += 1
                                                Zugzaehler += 1
                                                AmZug(Zugzaehler) = 1
                                                SPIELSTAND
                                            END IF
                                        END IF
                                    END IF
                                    Tastensperre(6) = 1
                                END IF
                            END IF
                            '/

                            ' Steine schlagen - Ziehmodus
                            IF SPIELER(1).Status = 1 OR SPIELER(2).Status = 1 THEN

                                IF SPIELER(1).Steine < 4 AND SPIELER(1).Status = 1 THEN SPIELER(1).Status = 2
                                IF SPIELER(2).Steine < 4 AND SPIELER(2).Status = 1 THEN SPIELER(2).Status = 2

                                IF Tastensperre(7) = 0 THEN
                                    IF Spieler(1).Muehle > 0 AND Spieler(1).Status > 0 THEN
                                        IF SPIELER(1).dran = 1 AND Feld(A) = 2 THEN
                                            j = 0
                                            FOR i = 1 TO 24
                                                IF gesperrteMuehle(i, 2) = 1 THEN j += 1
                                            NEXT
                                            IF gesperrteMuehle(A, 2) = 0 OR (SPIELER(2).Steine-SPIELER(2).SetzSteine) = j THEN
                                                IF SPIELER(1).Status > 0 THEN PRUEFEMUEHLE
                                                Feld(A) = 0
                                                SPIELER(2).Steine -= 1
                                                SPIELER(1).Muehle -= 1
                                                Remiszaehler = 0
                                                SPIELFELD
                                                PRUEFEMUEHLE
                                                IF Spieler(1).Muehle < 1 THEN Zugzaehler += 1: AmZug(Zugzaehler) = 2: SPIELSTAND
                                            END IF
                                            IF SPIELER(1).Muehle < 1 THEN SPIELER(1).dran = 0: SPIELER(2).dran = 1: FeldAlt = 0: AmZug(Zugzaehler) = 2: SPIELSTAND
                                        END IF
                                    END IF
                                    IF Spieler(2).Muehle > 0 AND Spieler(2).Status > 0 THEN
                                        IF SPIELER(2).dran = 1 AND Feld(A) = 1 THEN
                                            j = 0
                                            FOR i = 1 TO 24
                                                IF gesperrteMuehle(i, 1) = 1 THEN j += 1
                                            NEXT
                                            IF gesperrteMuehle(A, 1) = 0 OR (SPIELER(1).Steine-SPIELER(1).SetzSteine) = j THEN
                                                IF SPIELER(2).Status > 0 THEN PRUEFEMUEHLE
                                                Feld(A) = 0
                                                Spieler(1).Steine -= 1
                                                SPIELER(2).Muehle -= 1
                                                Remiszaehler = 0
                                                SPIELFELD
                                                PRUEFEMUEHLE
                                                IF Spieler(2).Muehle < 1 THEN Zugzaehler += 1: AmZug(Zugzaehler) = 1: SPIELSTAND
                                            END IF
                                            IF SPIELER(2).Muehle < 1 THEN SPIELER(2).dran = 0: SPIELER(1).dran = 1: FeldAlt = 0: AmZug(Zugzaehler) = 1: SPIELSTAND
                                        END IF
                                    END IF
                                END IF
                                Tastensperre(7) = 1
                            END IF
                            '/

                    END SELECT
            END SELECT


            SELECT CASE mausx
                CASE 520 TO 620
                    SELECT CASE mausy
                        CASE 10 TO 30
                            BUTTON 520,10,620,30
                            RUECKSETZEN
                            SPIELFELD
                    END SELECT
            END SELECT


            SELECT CASE mausx
                CASE 625 TO 645
                    SELECT CASE mausy
                        CASE 10 TO 30
                            IF Tastensperre(8) = 1 THEN
                                BUTTON 625,10,645,30
                                IF Zugzaehler > 0 THEN
                                    Zugzaehler -= 1
                                    ' IF Spieler(1).Dran = 1 THEN
                                    FOR j = 1 TO 24
                                        k = VAL(MID(Stellung(Zugzaehler), j, 1))
                                        Feld(j) = k
                                    NEXT

                                    IF AmZug(ZugZaehler) = 1 THEN Spieler(1).Dran = 1: Spieler(2).Dran = 0
                                    IF AmZug(ZugZaehler) = 2 THEN Spieler(2).Dran = 1: Spieler(1).Dran = 0

                                    '
                                    SPIELER(1).Status = Zustand(Zugzaehler).SpielphaseWeiss
                                    SPIELER(2).Status = Zustand(Zugzaehler).SpielphaseSchwarz
                                    SPIELER(1).Steine = Zustand(Zugzaehler).AnzahlSteineWeiss
                                    SPIELER(2).Steine = Zustand(Zugzaehler).AnzahlSteineSchwarz
                                    SPIELER(1).SetzSteine = Zustand(Zugzaehler).SetzSteineWeiss
                                    SPIELER(2).SetzSteine = Zustand(Zugzaehler).SetzSteineSchwarz
                                    '/

                                    SPIELFELD
                                END IF
                            END IF
                            Tastensperre(8) = 1
                    END SELECT
            END SELECT
            
            
            SELECT CASE mausx
                CASE 650 TO 670
                    SELECT CASE mausy
                        CASE 10 TO 30
                            IF Tastensperre(9) = 1 THEN
                                BUTTON 650,10,670,30
                                IF Zugzaehler > 0 THEN
                                    Zugzaehler += 1
                                    ' IF Spieler(1).Dran = 1 THEN
                                    FOR j = 1 TO 24
                                        k = VAL(MID(Stellung(Zugzaehler), j, 1))
                                        Feld(j) = k
                                    NEXT

                                    IF AmZug(ZugZaehler) = 1 THEN Spieler(1).Dran = 1: Spieler(2).Dran = 0
                                    IF AmZug(ZugZaehler) = 2 THEN Spieler(2).Dran = 1: Spieler(1).Dran = 0

                                    '
                                    SPIELER(1).Status = Zustand(Zugzaehler).SpielphaseWeiss
                                    SPIELER(2).Status = Zustand(Zugzaehler).SpielphaseSchwarz
                                    SPIELER(1).Steine = Zustand(Zugzaehler).AnzahlSteineWeiss
                                    SPIELER(2).Steine = Zustand(Zugzaehler).AnzahlSteineSchwarz
                                    SPIELER(1).SetzSteine = Zustand(Zugzaehler).SetzSteineWeiss
                                    SPIELER(2).SetzSteine = Zustand(Zugzaehler).SetzSteineSchwarz
                                    '/

                                    SPIELFELD
                                END IF
                            END IF
                            Tastensperre(9) = 1
                    END SELECT
            END SELECT

            ' 625, 10, 645, 30



        CASE 2

            FeldAlt = 0 ' Spielstein abwählen
            SPIELFELD

    END SELECT
    IF mausk = 0 THEN Tastensperre(1) = 0: Tastensperre(2) = 0: Tastensperre(3) = 0: Tastensperre(4) = 0: Tastensperre(5) = 0: Tastensperre(6) = 0: Tastensperre(7) = 0

    ' Anzeige der verfügbaren Steine!
    SCREENLOCK
    LINE (6, 520)-(487, 569), &h000000, BF
    LINE (6, 580)-(487, 629), &h000000, BF

    IF Spieler(1).Setzsteine > 0 THEN
        SteinpufferWeiss = IMAGECREATE(50,50)
        BLOAD (EXEPATH & "\Weiß.bmp", SteinpufferWeiss)
        FOR i = 1 TO (Spieler(1).Setzsteine*9) STEP 9
            PUT (i*6,520), SteinpufferWeiss, TRANS
        NEXT
        IMAGEDESTROY (SteinpufferWeiss)
    END IF

    IF SPIELER(2).Setzsteine > 0 THEN
        LINE (6, 580)-(487, 629), &h000000, BF
        SteinpufferSchwarz = IMAGECREATE(50,50)
        BLOAD (EXEPATH & "\Schwarz.bmp", SteinpufferSchwarz)
        FOR i = 1 TO (Spieler(2).Setzsteine*9) STEP 9
            PUT (i*6,580), SteinpufferSchwarz, TRANS
        NEXT
        IMAGEDESTROY (SteinpufferSchwarz)
    END IF
    SCREENUNLOCK

    ' Stellung wegen 3-facher-Stellungswiederholung speichern
    IF Spieler(1).Muehle = 0 AND Spieler(2).Muehle = 0 THEN
        Stellung(Zugzaehler) = STR(Feld(1)) + STR(Feld(2)) + STR(Feld(3)) + STR(Feld(4)) + STR(Feld(5)) + STR(Feld(6)) + STR(Feld(7)) + STR(Feld(8)) + STR(Feld(9)) + STR(Feld(10)) + STR(Feld(11)) + STR(Feld(12)) + STR(Feld(13)) + STR(Feld(14)) + STR(Feld(15)) + STR(Feld(16)) + STR(Feld(17)) + STR(Feld(18)) + STR(Feld(19)) + STR(Feld(20)) + STR(Feld(21)) + STR(Feld(22)) + STR(Feld(23)) + STR(Feld(24))
        Stellungswiederholung = 0
        FOR i = 1 TO Zugzaehler
            IF Stellung(i) = StellungAlt(Zugzaehler) THEN Stellungswiederholung += 1
        NEXT
        StellungAlt(Zugzaehler) = Stellung(Zugzaehler)
    END IF


    ' Anzahl der gültigen Züge errechnen - Weiß am Zug
    IF Spieler(1).dran = 1 THEN
        FOR i = 1 TO 24
            gueltige(i) = 0
        NEXT

        FOR i = 1 TO 24
            IF Feld(i) = 1 THEN
                IF i = 1 THEN gueltige(2) = 1: gueltige(10) = 1
                IF i = 2 THEN gueltige(1) = 1: gueltige(3) = 1: gueltige(5) = 1
                IF i = 3 THEN gueltige(2) = 1: gueltige(15) = 1
                IF i = 4 THEN gueltige(5) = 1: gueltige(11) = 1
                IF i = 5 THEN gueltige(2) = 1: gueltige(4) = 1: gueltige(6) = 1: gueltige(8) = 1
                IF i = 6 THEN gueltige(5) = 1: gueltige(14) = 1
                IF i = 7 THEN gueltige(8) = 1: gueltige(12) = 1
                IF i = 8 THEN gueltige(5) = 1: gueltige(7) = 1: gueltige(9) = 1
                IF i = 9 THEN gueltige(8) = 1: gueltige(13) = 1
                IF i = 10 THEN gueltige(1) = 1: gueltige(11) = 1: gueltige(22) = 1
                IF i = 11 THEN gueltige(4) = 1: gueltige(10) = 1: gueltige(12) = 1: gueltige(19) = 1
                IF i = 12 THEN gueltige(7) = 1: gueltige(11) = 1: gueltige(16) = 1
                IF i = 13 THEN gueltige(9) = 1: gueltige(14) = 1: gueltige(18) = 1
                IF i = 14 THEN gueltige(6) = 1: gueltige(13) = 1: gueltige(15) = 1: gueltige(21) = 1
                IF i = 15 THEN gueltige(3) = 1: gueltige(14) = 1: gueltige(24) = 1
                IF i = 16 THEN gueltige(12) = 1: gueltige(17) = 1
                IF i = 17 THEN gueltige(16) = 1: gueltige(18) = 1: gueltige(20) = 1
                IF i = 18 THEN gueltige(13) = 1: gueltige(17) = 1
                IF i = 19 THEN gueltige(11) = 1: gueltige(20) = 1
                IF i = 20 THEN gueltige(17) = 1: gueltige(19) = 1: gueltige(21) = 1: gueltige(23) = 1
                IF i = 21 THEN gueltige(14) = 1: gueltige(20) = 1
                IF i = 22 THEN gueltige(10) = 1: gueltige(23) = 1
                IF i = 23 THEN gueltige(20) = 1: gueltige(22) = 1: gueltige(24) = 1
                IF i = 24 THEN gueltige(15) = 1: gueltige(23) = 1
            END IF
        NEXT

        '
        IF SPIELER(1).Status = 2 OR SPIELER(2).Status = 2 THEN
            IF Spieler(1).Steine < 4 THEN
                FOR i = 1 TO 24
                    IF Feld(i) = 0 THEN gueltige(i) = 1
                NEXT
            END IF
        END IF
        '/

    END IF

    ' Anzahl der gültigen Züge errechnen - Schwarz am Zug
    IF Spieler(2).dran = 1 THEN
        FOR i = 1 TO 24
            gueltige(i) = 0
        NEXT

        FOR i = 1 TO 24
            IF Feld(i) = 2 THEN
                IF i = 1 THEN gueltige(2) = 1: gueltige(10) = 1
                IF i = 2 THEN gueltige(1) = 1: gueltige(3) = 1: gueltige(5) = 1
                IF i = 3 THEN gueltige(2) = 1: gueltige(15) = 1
                IF i = 4 THEN gueltige(5) = 1: gueltige(11) = 1
                IF i = 5 THEN gueltige(2) = 1: gueltige(4) = 1: gueltige(6) = 1: gueltige(8) = 1
                IF i = 6 THEN gueltige(5) = 1: gueltige(14) = 1
                IF i = 7 THEN gueltige(8) = 1: gueltige(12) = 1
                IF i = 8 THEN gueltige(5) = 1: gueltige(7) = 1: gueltige(9) = 1
                IF i = 9 THEN gueltige(8) = 1: gueltige(13) = 1
                IF i = 10 THEN gueltige(1) = 1: gueltige(11) = 1: gueltige(22) = 1
                IF i = 11 THEN gueltige(4) = 1: gueltige(10) = 1: gueltige(12) = 1: gueltige(19) = 1
                IF i = 12 THEN gueltige(7) = 1: gueltige(11) = 1: gueltige(16) = 1
                IF i = 13 THEN gueltige(9) = 1: gueltige(14) = 1: gueltige(18) = 1
                IF i = 14 THEN gueltige(6) = 1: gueltige(13) = 1: gueltige(15) = 1: gueltige(21) = 1
                IF i = 15 THEN gueltige(3) = 1: gueltige(14) = 1: gueltige(24) = 1
                IF i = 16 THEN gueltige(12) = 1: gueltige(17) = 1
                IF i = 17 THEN gueltige(16) = 1: gueltige(18) = 1: gueltige(20) = 1
                IF i = 18 THEN gueltige(13) = 1: gueltige(17) = 1
                IF i = 19 THEN gueltige(11) = 1: gueltige(20) = 1
                IF i = 20 THEN gueltige(17) = 1: gueltige(19) = 1: gueltige(21) = 1: gueltige(23) = 1
                IF i = 21 THEN gueltige(14) = 1: gueltige(20) = 1
                IF i = 22 THEN gueltige(10) = 1: gueltige(23) = 1
                IF i = 23 THEN gueltige(20) = 1: gueltige(22) = 1: gueltige(24) = 1
                IF i = 24 THEN gueltige(15) = 1: gueltige(23) = 1
            END IF
        NEXT

        '
        IF SPIELER(1).Status = 2 OR SPIELER(2).Status = 2 THEN
            IF Spieler(2).Steine < 4 THEN
                FOR i = 1 TO 24
                    IF Feld(i) = 0 THEN gueltige(i) = 1
                NEXT
            END IF
        END IF
        '/
    END IF

    j = 0
    FOR i = 1 TO 24
        IF gueltige(i) = 1 AND Feld(i) = 0 THEN j += 1
    NEXT

    ' Partie ist Remis durch 3-fache-Stellungswiederholung
    IF Stellungswiederholung >= 3 THEN
        IF SPIELER(1).Status > -1 AND SPIELER(2).Status > -1 THEN MessageBox(0, "Remis durch 3-fache-Stellungswiederholung!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF

    ' Partie ist Remis durch 30-Züge-Regel
    IF Remiszaehler >= 60 THEN
        IF SPIELER(1).Status > -1 AND SPIELER(2).Status > -1 THEN MessageBox(0, "Remis durch 30-Züge-Regel!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF

    ' Schwarz gewinnt
    IF SPIELER(1).Steine < 3 THEN
        IF SPIELER(1).Status > 0 AND SPIELER(2).Status > 0 THEN MessageBox(0, "Schwarz hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF

    ' Weiß gewinnt
    IF SPIELER(2).Steine < 3 THEN
        IF SPIELER(1).Status > 0 AND SPIELER(2).Status > 0 THEN MessageBox(0, "Weiß hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF

    ' Schwarz hat gewonnen - Kein Zug möglich
    IF Spieler(1).Dran = 1 AND j = 0 AND SPIELER(1).Status > 0 AND SPIELER(2).Status > 0 THEN
        MessageBox(0, "Schwarz hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF


    ' Weiß hat gewonnen - Kein Zug möglich
    IF Spieler(2).Dran = 1 AND j = 0 AND SPIELER(1).Status > 0 AND SPIELER(2).Status > 0 THEN
        MessageBox(0, "Weiß hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
        SPIELER(1).Status = -1
        SPIELER(2).Status = -1
        SPIELER(1).Dran = 0
        SPIELER(2).Dran = 0
    END IF

    IF mausk < 1 THEN SLEEP 1 ' Prozessorzeit senken
    tasten = INKEY
LOOP UNTIL tasten = CHR(27) OR tasten = CHR(255, 107) ' Programmende durch Mausklick auf X oder ESC - Taste

END

SUB SPIELFELD

    SCREENLOCK
    Spielfeldpuffer = IMAGECREATE(510,510)
    BLOAD (EXEPATH & "\Muehlebrett.bmp", Spielfeldpuffer)
    PUT (1,1), Spielfeldpuffer, PSET
    IMAGEDESTROY (Spielfeldpuffer)

    Steinpuffer = IMAGECREATE(50,50)
    FOR i = 1 TO 24
        IF Feld(i) = 1 THEN BLOAD (EXEPATH & "\Weiß.bmp", Steinpuffer)
        IF Feld(i) = 2 THEN BLOAD (EXEPATH & "\Schwarz.bmp", Steinpuffer)
        IF Feld(i) > 0 THEN PUT (SX(i),SY(i)), Steinpuffer, TRANS
    NEXT
    IMAGEDESTROY (Steinpuffer)
    SCREENUNLOCK

END SUB

SUB RUECKSETZEN
    FOR i = 1 TO 24
        Feld(i) = 0
        gesperrteMuehle(i, 1) = 0
        gesperrteMuehle(i, 2) = 0
    NEXT

    FOR i = 1 TO 200000
        Stellung(i) = ""
        StellungAlt(i) = ""
        AmZug(i) = 0
        Zustand(i).SpielphaseWeiss = 0
        Zustand(i).SpielphaseSchwarz = 0
        Zustand(i).AnzahlSteineWeiss = 0
        Zustand(i).AnzahlSteineSchwarz = 0
        Zustand(i).SetzSteineWeiss = 0
        Zustand(i).SetzSteineSchwarz = 0
    NEXT

    FOR i = 1 TO 2
        SPIELER(i).Computer = 0
        SPIELER(i).aktiv = 0
        SPIELER(i).Steine = 9
        SPIELER(i).SetzSteine = 9
        SPIELER(i).Status = 0
    NEXT
    Spieler(1).dran = 1 ' Weiß beginnt
    Spieler(2).dran = 0
    FeldAlt = 0
    Remiszaehler = 0
    Stellungswiederholung = 0
    Zugzaehler = 0
    AmZug(0) = 1
    Zustand(0).SpielphaseWeiss = 0
    Zustand(0).SpielphaseSchwarz = 0
    Zustand(0).AnzahlSteineWeiss = 9
    Zustand(0).AnzahlSteineSchwarz = 9
    Zustand(0).SetzSteineWeiss = 9
    Zustand(0).SetzSteineSchwarz = 9

    StellungAlt(0) = "Grundstellung"

    muehle = FALSE


END SUB

SUB ANZAHLMUEHLEN

    ' Mühlezähler auf 0 setzen
    SPIELER(1).Muehle = 0
    SPIELER(2).Muehle = 0

    /' Zähler auf 0 setzen
    IF k = 0 THEN
        FOR i = 1 TO 24
            IF SPIELER(1).Muehle > 0 OR SPIELER(1).Status > 0 THEN gesperrteMuehle(i, 1) = 0
            IF SPIELER(2).Muehle > 0 OR SPIELER(2).Status > 0 THEN gesperrteMuehle(i, 2) = 0
        NEXT
    END IF
    '/


    IF Spieler(1).dran = 1 THEN
        ' Mühleprüfung Senkrecht - Mensch
        FOR i = 1 TO 22 STEP 3
            IF Feld(i) = 1 AND Feld(i+1) = 1 AND Feld(i+2) = 1 THEN
                ' gesperrteMuehle(i, 1) = 1
                ' gesperrteMuehle(i+1, 1) = 1
                ' gesperrteMuehle(i+2, 1) = 1
                IF A = i OR A = i+1 OR A = i+2 THEN
                    IF A > 0 THEN
                        Spieler(1).Muehle += 1
                    END IF
                END IF
            END IF
        NEXT

        ' Mühleprüfung Waagrecht - Mensch
        IF Feld(1) = 1 AND Feld(10) = 1 AND Feld(22) = 1 THEN
            ' gesperrteMuehle(1, 1) = 1
            ' gesperrteMuehle(10, 1) = 1
            ' gesperrteMuehle(22, 1) = 1
            IF A = 1 OR A = 10 OR A = 22 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(4) = 1 AND Feld(11) = 1 AND Feld(19) = 1 THEN
            ' gesperrteMuehle(4, 1) = 1
            ' gesperrteMuehle(11, 1) = 1
            ' gesperrteMuehle(19, 1) = 1
            IF A = 4 OR A = 11 OR A = 19 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(7) = 1 AND Feld(12) = 1 AND Feld(16) = 1 THEN
            ' gesperrteMuehle(7, 1) = 1
            ' gesperrteMuehle(12, 1) = 1
            ' gesperrteMuehle(16, 1) = 1
            IF A = 7 OR A = 12 OR A = 16 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(2) = 1 AND Feld(5) = 1 AND Feld(8) = 1 THEN
            ' gesperrteMuehle(2, 1) = 1
            ' gesperrteMuehle(5, 1) = 1
            ' gesperrteMuehle(8, 1) = 1
            IF A = 2 OR A = 5 OR A = 8 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(17) = 1 AND Feld(20) = 1 AND Feld(23) = 1 THEN
            ' gesperrteMuehle(17, 1) = 1
            ' gesperrteMuehle(20, 1) = 1
            ' gesperrteMuehle(23, 1) = 1
            IF A = 17 OR A = 20 OR A = 23 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(9) = 1 AND Feld(13) = 1 AND Feld(18) = 1 THEN
            ' gesperrteMuehle(9, 1) = 1
            ' gesperrteMuehle(13, 1) = 1
            ' gesperrteMuehle(18, 1) = 1
            IF A = 9 OR A = 13 OR A = 18 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(6) = 1 AND Feld(14) = 1 AND Feld(21) = 1 THEN
            ' gesperrteMuehle(6, 1) = 1
            ' gesperrteMuehle(14, 1) = 1
            ' gesperrteMuehle(21, 1) = 1
            IF A = 6 OR A = 14 OR A = 21 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(3) = 1 AND Feld(15) = 1 AND Feld(24) = 1 THEN
            ' gesperrteMuehle(3, 1) = 1
            ' gesperrteMuehle(15, 1) = 1
            ' gesperrteMuehle(24, 1) = 1
            IF A = 3 OR A = 15 OR A = 24 THEN
                IF A > 0 THEN
                    Spieler(1).Muehle += 1
                END IF
            END IF
        END IF
    END IF

    IF Spieler(2).dran = 1 THEN
        ' Mühleprüfung Senkrecht - Mensch
        FOR i = 1 TO 22 STEP 3
            IF Feld(i) = 2 AND Feld(i+1) = 2 AND Feld(i+2) = 2 THEN
                ' gesperrteMuehle(i, 2) = 1
                ' gesperrteMuehle(i+1, 2) = 1
                ' gesperrteMuehle(i+2, 2) = 1
                IF A = i OR A = i+1 OR A = i+2 THEN
                    IF A > 0 THEN
                        Spieler(2).Muehle += 1
                    END IF
                END IF
            END IF
        NEXT

        ' Mühleprüfung Waagrecht - Mensch
        IF Feld(1) = 2 AND Feld(10) = 2 AND Feld(22) = 2 THEN
            ' gesperrteMuehle(1, 2) = 1
            ' gesperrteMuehle(10, 2) = 1
            ' gesperrteMuehle(22, 2) = 1
            IF A = 1 OR A = 10 OR A = 22 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(4) = 2 AND Feld(11) = 2 AND Feld(19) = 2 THEN
            ' gesperrteMuehle(4, 2) = 1
            ' gesperrteMuehle(11, 2) = 1
            ' gesperrteMuehle(19, 2) = 1
            IF A = 4 OR A = 11 OR A = 19 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(7) = 2 AND Feld(12) = 2 AND Feld(16) = 2 THEN
            ' gesperrteMuehle(7, 2) = 1
            ' gesperrteMuehle(12, 2) = 1
            ' gesperrteMuehle(16, 2) = 1
            IF A = 7 OR A = 12 OR A = 16 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(2) = 2 AND Feld(5) = 2 AND Feld(8) = 2 THEN
            ' gesperrteMuehle(2, 2) = 1
            ' gesperrteMuehle(5, 2) = 1
            ' gesperrteMuehle(8, 2) = 1
            IF A = 2 OR A = 5 OR A = 8 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(17) = 2 AND Feld(20) = 2 AND Feld(23) = 2 THEN
            ' gesperrteMuehle(17, 2) = 1
            ' gesperrteMuehle(20, 2) = 1
            ' gesperrteMuehle(23, 2) = 1
            IF A = 17 OR A = 20 OR A = 23 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(9) = 2 AND Feld(13) = 2 AND Feld(18) = 2 THEN
            ' gesperrteMuehle(9, 2) = 1
            ' gesperrteMuehle(13, 2) = 1
            ' gesperrteMuehle(18, 2) = 1
            IF A = 9 OR A = 13 OR A = 18 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(6) = 2 AND Feld(14) = 2 AND Feld(21) = 2 THEN
            ' gesperrteMuehle(6, 2) = 1
            ' gesperrteMuehle(14, 2) = 1
            ' gesperrteMuehle(21, 2) = 1
            IF A = 6 OR A = 14 OR A = 21 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
        IF Feld(3) = 2 AND Feld(15) = 2 AND Feld(24) = 2 THEN
            ' gesperrteMuehle(3, 2) = 1
            ' gesperrteMuehle(15, 2) = 1
            ' gesperrteMuehle(24, 2) = 1
            IF A = 3 OR A = 15 OR A = 24 THEN
                IF A > 0 THEN
                    Spieler(2).Muehle += 1
                END IF
            END IF
        END IF
    END IF

    ' IF Muehle AND Dran = 1 THEN NOTATION

    ' IF Spieler(1).dran = 1 THEN Spieler(2).dran = 0
    ' IF Spieler(2).dran = 1 THEN Spieler(1).dran = 0

    IF Spieler(1).Muehle > 0 OR Spieler(2).Muehle > 0 THEN Muehle = 1

    ' Anzeige - Mühle
    IF Spieler(1).Muehle = 1 OR Spieler(2).Muehle = 1 THEN MessageBox(0, "Mühle zu! Nimm einen Stein weg!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
    IF Spieler(1).Muehle = 2 OR Spieler(2).Muehle = 2 THEN MessageBox(0, "Mühle zu! Nimm zwei Steine weg!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)

END SUB


SUB PRUEFEMUEHLE

    /' Zähler auf 0 setzen
    FOR i = 1 TO 24
        IF SPIELER(1).Muehle > 0 OR SPIELER(1).Status > 0 THEN gesperrteMuehle(i, 1) = 0
        IF SPIELER(2).Muehle > 0 OR SPIELER(2).Status > 0 THEN gesperrteMuehle(i, 2) = 0
    NEXT
    '/


    ' Zähler auf 0 setzen
    FOR i = 1 TO 24
        gesperrteMuehle(i, 1) = 0
        gesperrteMuehle(i, 2) = 0
    NEXT

    FOR j = 1 TO 24
        IF Feld(j) = 2 THEN
            ' Mühleprüfung Senkrecht - Mensch
            FOR i = 1 TO 22 STEP 3
                IF Feld(i) = 2 AND Feld(i+1) = 2 AND Feld(i+2) = 2 THEN
                    IF j = i OR j = i+1 OR j = i+2 THEN
                        gesperrteMuehle(i, 2) = 1
                        gesperrteMuehle(i+1, 2) = 1
                        gesperrteMuehle(i+2, 2) = 1
                    END IF
                END IF
            NEXT

            ' Mühleprüfung Waagrecht - Mensch
            IF Feld(1) = 2 AND Feld(10) = 2 AND Feld(22) = 2 THEN
                IF j = 1 OR j = 10 OR j = 22 THEN
                    gesperrteMuehle(1, 2) = 1
                    gesperrteMuehle(10, 2) = 1
                    gesperrteMuehle(22, 2) = 1
                END IF
            END IF
            IF Feld(4) = 2 AND Feld(11) = 2 AND Feld(19) = 2 THEN
                IF j = 4 OR j = 11 OR j = 19 THEN
                    gesperrteMuehle(4, 2) = 1
                    gesperrteMuehle(11, 2) = 1
                    gesperrteMuehle(19, 2) = 1
                END IF
            END IF
            IF Feld(7) = 2 AND Feld(12) = 2 AND Feld(16) = 2 THEN
                IF j = 7 OR j = 12 OR j = 16 THEN
                    gesperrteMuehle(7, 2) = 1
                    gesperrteMuehle(12, 2) = 1
                    gesperrteMuehle(16, 2) = 1
                END IF
            END IF
            IF Feld(2) = 2 AND Feld(5) = 2 AND Feld(8) = 2 THEN
                IF j = 2 OR j = 5 OR j = 8 THEN
                    gesperrteMuehle(2, 2) = 1
                    gesperrteMuehle(5, 2) = 1
                    gesperrteMuehle(8, 2) = 1
                END IF
            END IF
            IF Feld(17) = 2 AND Feld(20) = 2 AND Feld(23) = 2 THEN
                IF j = 17 OR j = 20 OR j = 23 THEN
                    gesperrteMuehle(17, 2) = 1
                    gesperrteMuehle(20, 2) = 1
                    gesperrteMuehle(23, 2) = 1
                END IF
            END IF
            IF Feld(9) = 2 AND Feld(13) = 2 AND Feld(18) = 2 THEN
                IF j = 9 OR j = 13 OR j = 18 THEN
                    gesperrteMuehle(9, 2) = 1
                    gesperrteMuehle(13, 2) = 1
                    gesperrteMuehle(18, 2) = 1
                END IF
            END IF
            IF Feld(6) = 2 AND Feld(14) = 2 AND Feld(21) = 2 THEN
                IF j = 6 OR j = 14 OR j = 21 THEN
                    gesperrteMuehle(6, 2) = 1
                    gesperrteMuehle(14, 2) = 1
                    gesperrteMuehle(21, 2) = 1
                END IF
            END IF
            IF Feld(3) = 2 AND Feld(15) = 2 AND Feld(24) = 2 THEN
                IF j = 3 OR j = 15 OR j = 24 THEN
                    gesperrteMuehle(3, 2) = 1
                    gesperrteMuehle(15, 2) = 1
                    gesperrteMuehle(24, 2) = 1
                END IF
            END IF
        END IF
    NEXT

    FOR j = 1 TO 24
        IF Feld(j) = 1 THEN

            ' Mühleprüfung Senkrecht - Mensch
            FOR i = 1 TO 22 STEP 3
                IF Feld(i) = 1 AND Feld(i+1) = 1 AND Feld(i+2) = 1 THEN
                    IF j = i OR j = i+1 OR j = i+2 THEN
                        gesperrteMuehle(i, 1) = 1
                        gesperrteMuehle(i+1, 1) = 1
                        gesperrteMuehle(i+2, 1) = 1
                    END IF
                END IF
            NEXT

            ' Mühleprüfung Waagrecht - Mensch
            IF Feld(1) = 1 AND Feld(10) = 1 AND Feld(22) = 1 THEN
                IF j = 1 OR j = 10 OR j = 22 THEN
                    gesperrteMuehle(1, 1) = 1
                    gesperrteMuehle(10, 1) = 1
                    gesperrteMuehle(22, 1) = 1
                END IF
            END IF
            IF Feld(4) = 1 AND Feld(11) = 1 AND Feld(19) = 1 THEN
                IF j = 4 OR j = 11 OR j = 19 THEN
                    gesperrteMuehle(4, 1) = 1
                    gesperrteMuehle(11, 1) = 1
                    gesperrteMuehle(19, 1) = 1
                END IF
            END IF
            IF Feld(7) = 1 AND Feld(12) = 1 AND Feld(16) = 1 THEN
                IF j = 7 OR j = 12 OR j = 16 THEN
                    gesperrteMuehle(7, 1) = 1
                    gesperrteMuehle(12, 1) = 1
                    gesperrteMuehle(16, 1) = 1
                END IF
            END IF
            IF Feld(2) = 1 AND Feld(5) = 1 AND Feld(8) = 1 THEN
                IF j = 2 OR j = 5 OR j = 8 THEN
                    gesperrteMuehle(2, 1) = 1
                    gesperrteMuehle(5, 1) = 1
                    gesperrteMuehle(8, 1) = 1
                END IF
            END IF
            IF Feld(17) = 1 AND Feld(20) = 1 AND Feld(23) = 1 THEN
                IF j = 17 OR j = 20 OR j = 23 THEN
                    gesperrteMuehle(17, 1) = 1
                    gesperrteMuehle(20, 1) = 1
                    gesperrteMuehle(23, 1) = 1
                END IF
            END IF
            IF Feld(9) = 1 AND Feld(13) = 1 AND Feld(18) = 1 THEN
                IF j = 9 OR j = 13 OR j = 18 THEN
                    gesperrteMuehle(9, 1) = 1
                    gesperrteMuehle(13, 1) = 1
                    gesperrteMuehle(18, 1) = 1
                END IF
            END IF
            IF Feld(6) = 1 AND Feld(14) = 1 AND Feld(21) = 1 THEN
                IF j = 6 OR j = 14 OR j = 21 THEN
                    gesperrteMuehle(6, 1) = 1
                    gesperrteMuehle(14, 1) = 1
                    gesperrteMuehle(21, 1) = 1
                END IF
            END IF
            IF Feld(3) = 1 AND Feld(15) = 1 AND Feld(24) = 1 THEN
                IF j = 3 OR j = 15 OR j = 24 THEN
                    gesperrteMuehle(3, 1) = 1
                    gesperrteMuehle(15, 1) = 1
                    gesperrteMuehle(24, 1) = 1
                END IF
            END IF
        END IF
    NEXT
    '/

    IF muehle = 0 THEN ANZAHLMUEHLEN

    IF Spieler(1).Muehle = 0 AND SPIELER(2).Muehle = 0 THEN Muehle = 0 ' Zähler auf Null setzen


    ' IF Muehle AND M(dran) = 1 THEN MessageBox(0, "Mühle zu! Nimm einen Stein weg!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
    ' IF Muehle AND M(dran) = 2 THEN MessageBox(0, "Mühle zu! Nimm zwei Steine weg!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)


    /' Prüfung ob ausgewählter Stein genommen werden darf - könnte ein Stein aus einer Mühle sein!
    IF Dran = 1 THEN
        i = 1
        DO
            IF gesperrteMuehle(i, 1) = 0 AND Feld(i) = 1 THEN
                NurMuehlen(1) = FALSE
                EXIT DO
            END IF
            NurMuehlen(Dran) = TRUE
            SLEEP 50
            i += 1
        LOOP WHILE i < 24
    END IF

    ' Prüfung ob ausgewählter Stein genommen werden darf - könnte ein Stein aus einer Mühle sein!
    IF Dran = 2 THEN
        i = 1
        DO
            IF gesperrteMuehle(i, 2) = 0 AND Feld(i) = 2 THEN
                NurMuehlen(2) = FALSE
                EXIT DO
            END IF
            NurMuehlen(2) = TRUE
            SLEEP 50
            i += 1
        LOOP WHILE i < 24
    END IF
    '/

END SUB

SUB GUELTIGEZUEGE

    ' Speicher leeren
    FOR i = 1 TO 24
        gueltige(i) = 0
    NEXT

    ' gültige Züge beim ziehen
    FOR i = 1 to 2
        IF Spieler(i).Dran = 1 AND Spieler(i).Steine > 3 THEN
            IF FeldAlt = 1 THEN gueltige(2) = 1: gueltige(10) = 1
            IF FeldAlt = 2 THEN gueltige(1) = 1: gueltige(3) = 1: gueltige(5) = 1
            IF FeldAlt = 3 THEN gueltige(2) = 1: gueltige(15) = 1
            IF FeldAlt = 4 THEN gueltige(5) = 1: gueltige(11) = 1
            IF FeldAlt = 5 THEN gueltige(2) = 1: gueltige(4) = 1: gueltige(6) = 1: gueltige(8) = 1
            IF FeldAlt = 6 THEN gueltige(5) = 1: gueltige(14) = 1
            IF FeldAlt = 7 THEN gueltige(8) = 1: gueltige(12) = 1
            IF FeldAlt = 8 THEN gueltige(5) = 1: gueltige(7) = 1: gueltige(9) = 1
            IF FeldAlt = 9 THEN gueltige(8) = 1: gueltige(13) = 1
            IF FeldAlt = 10 THEN gueltige(1) = 1: gueltige(11) = 1: gueltige(22) = 1
            IF FeldAlt = 11 THEN gueltige(4) = 1: gueltige(10) = 1: gueltige(12) = 1: gueltige(19) = 1
            IF FeldAlt = 12 THEN gueltige(7) = 1: gueltige(11) = 1: gueltige(16) = 1
            IF FeldAlt = 13 THEN gueltige(9) = 1: gueltige(14) = 1: gueltige(18) = 1
            IF FeldAlt = 14 THEN gueltige(6) = 1: gueltige(13) = 1: gueltige(15) = 1: gueltige(21) = 1
            IF FeldAlt = 15 THEN gueltige(3) = 1: gueltige(14) = 1: gueltige(24) = 1
            IF FeldAlt = 16 THEN gueltige(12) = 1: gueltige(17) = 1
            IF FeldAlt = 17 THEN gueltige(16) = 1: gueltige(18) = 1: gueltige(20) = 1
            IF FeldAlt = 18 THEN gueltige(13) = 1: gueltige(17) = 1
            IF FeldAlt = 19 THEN gueltige(11) = 1: gueltige(20) = 1
            IF FeldAlt = 20 THEN gueltige(17) = 1: gueltige(19) = 1: gueltige(21) = 1: gueltige(23) = 1
            IF FeldAlt = 21 THEN gueltige(14) = 1: gueltige(20) = 1
            IF FeldAlt = 22 THEN gueltige(10) = 1: gueltige(23) = 1
            IF FeldAlt = 23 THEN gueltige(20) = 1: gueltige(22) = 1: gueltige(24) = 1
            IF FeldAlt = 24 THEN gueltige(15) = 1: gueltige(23) = 1
        END IF
    NEXT

    ' Felder zum springen auswählen, wenn Anzahl der Steine 3 ist
    IF SPIELER(1).Status = 2 OR SPIELER(2).Status = 2 THEN
        IF SPIELER(1).Dran = 1 AND Spieler(1).Steine < 4 THEN
            FOR i = 1 TO 24
                IF Feld(i) = 0 THEN gueltige(i) = 1
            NEXT
            EXIT SUB
        END IF

        IF SPIELER(2).Dran = 1 AND Spieler(2).Steine < 4 THEN
            FOR i = 1 TO 24
                IF Feld(i) = 0 THEN gueltige(i) = 1
            NEXT
            EXIT SUB
        END IF
    END IF

END SUB

SUB MENUFELD (XXX AS INTEGER, YYY AS INTEGER, XXXX AS INTEGER, YYYY AS INTEGER, FARBEN AS INTEGER)

    LINE (XXX, YYY)-(XXX, YYYY), &hFFFFFF
    LINE (XXX, YYY)-(XXXX, YYY), &hFFFFFF
    LINE (XXX, YYYY)-(XXXX, YYYY), &h555555
    LINE (XXXX, YYY)-(XXXX, YYYY), &h555555
    VIEW (XXX + 2, YYY + 2)-(XXXX - 2, YYYY - 2), FARBEN, FARBEN
    VIEW (0, 0)-(1024, 680)

END SUB

SUB BUTTON (XXX AS INTEGER, YYY AS INTEGER, XXXX AS INTEGER, YYYY AS INTEGER)

    LINE (XXX, YYY)-(XXX, YYYY), &h555555
    LINE (XXX, YYY)-(XXXX, YYY), &h555555
    LINE (XXX, YYYY)-(XXXX, YYYY), &hFFFFFF
    LINE (XXXX, YYY)-(XXXX, YYYY), &hFFFFFF

    GETMOUSE mausx, mausy,, mausk
    IF mausk = 1 OR mausk = 2 THEN
        DO
            GETMOUSE mausx, mausy,, mausk
            IF mausk = 0 THEN EXIT DO
            SLEEP 1
        LOOP
    END IF

    LINE (XXX, YYY)-(XXX, YYYY), &hFFFFFF
    LINE (XXX, YYY)-(XXXX, YYY), &hFFFFFF
    LINE (XXX, YYYY)-(XXXX, YYYY), &h555555
    LINE (XXXX, YYY)-(XXXX, YYYY), &h555555

END SUB

SUB Spielstand

    ' Spielstand speichern
    Zustand(Zugzaehler).SpielphaseWeiss = SPIELER(1).Status
    Zustand(Zugzaehler).SpielphaseSchwarz = SPIELER(2).Status
    Zustand(Zugzaehler).AnzahlSteineWeiss = SPIELER(1).Steine
    Zustand(Zugzaehler).AnzahlSteineSchwarz = SPIELER(2).Steine
    Zustand(Zugzaehler).SetzSteineWeiss = SPIELER(1).SetzSteine
    Zustand(Zugzaehler).SetzSteineSchwarz = SPIELER(2).SetzSteine

END SUB

/'
SUB MENU


END SUB
'/

Button.txt

36, 56, 448, 468, 23, 435, 46, 458
36, 56, 242, 262, 23, 229, 46, 252
36, 56, 34, 54, 23, 21, 46, 44
102, 122, 382, 402, 89, 369, 112, 392
102, 122, 242, 262, 89, 229, 112, 252
102, 122, 100, 120, 89, 87, 112, 110
167, 187, 316, 336, 154, 303, 177, 326
167, 187, 242, 262, 154, 229, 177, 252
167, 187, 169, 189, 154, 156, 177, 179
243, 263, 448, 468, 230, 435, 253, 458
243, 263, 382, 402, 230, 369, 253, 392
243, 263, 316, 336, 230, 303, 253, 326
243, 263, 167, 187, 230, 154, 253, 177
243, 263, 100, 120, 230, 87, 253, 110
243, 263, 34, 54, 230, 21, 253, 44
319, 339, 316, 336, 306, 303, 329, 326
319, 339, 242, 262, 306, 229, 329, 252
319, 339, 169, 189, 306, 156, 329, 179
387, 407, 382, 402, 374, 369, 397, 392
387, 407, 242, 262, 374, 229, 397, 252
387, 407, 100, 120, 374, 87, 397, 110
454, 474, 448, 468, 441, 435, 464, 458
454, 474, 242, 262, 441, 229, 464, 252
454, 474, 34, 54, 441, 21, 464, 44

Brett:
Brett

Dateimanager
Es wurden bisher keine Sources abgelegt.