Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [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:30.07.2015
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 SPIELFELD
DECLARE SUB SETZEN
DECLARE SUB PRUEFEMUEHLE
DECLARE SUB PRUEFESTEINE
DECLARE SUB COMPUTER
DECLARE SUB SCHLAGEN
DECLARE SUB STELLUNG
DECLARE SUB ENDE
DECLARE SUB GUELTIGEZUEGE
DECLARE SUB SPIELER
DECLARE SUB ANZAHLGUELTIGERZUEGE
DECLARE SUB NOTATION


DIM SHARED AS ANY PTR Spielfeldpuffer, Steinpuffer, Steinpuffer2
DIM SHARED AS STRING filename, tasten, Wort, Zugnotation(1000, 2)
DIM SHARED AS INTEGER A = 24, S = 2, i, E, k, L, T, XXX, whandle, Won, Dran
DIM SHARED AS INTEGER X(A) , Y(A), XX(A), YY(A), SX(A), SY(A), Feld(A), AnzahlSteine(S), M(S), _
gesperrteMuehle(A, S), gueltige(A), ZweiMuehlen, ZugHilfeX(A), ZugHilfeY(A)

DIM SHARED AS INTEGER Anfaenger, PC, MENSCH, Muehle, PcZug, Taste, angeklickt, FeldAlt, FeldNeu
DIM SHARED AS INTEGER Setzphase(S), Ziehen(S), geschlagene(S), Steine(S), gesetzteSteine(S)
DIM SHARED AS INTEGER AnzahlZuege, Halbzuege, Remiszaehler
DIM SHARED AS INTEGER Tastensperre(5), NurMuehlen(S), Anzahlgueltige(A)
DIM SHARED AS INTEGER mausx, mausy, mausk

DIM f AS INTEGER = FREEFILE

RANDOMIZE TIMER

' Definitionen von Werten
Won = 0 ' Kein Gewinner
Remiszaehler = 0 'Zähler für 50-Züge-Regel
Dran = 1 ' Weißspieler beginnt
AnzahlZuege = 0 ' Zügezähler beginnt bei 0
Halbzuege = 0 ' ********************
AnzahlSteine(1) = 9 ' Anzahl der Steine - Spieler 1
AnzahlSteine(2) = 9 ' Anzahl der Steine - Spieler 2
geschlagene(1) = 0 ' geschlagene Steine - Spieler 1
geschlagene(2) = 0 ' geschlagene Steine - Spieler 2
PC = -10 ' Computer vorerst ausgeschaltet bei -10
Mensch = TRUE ' Mensch vorerst aktiviert
Anfaenger = INT(2 * RND + 1) ' Anfaenger ermitteln

IF PC = 0 THEN
    IF Anfaenger = 1 AND PC = 0 THEN Mensch = TRUE: PC = FALSE ELSE Mensch = FALSE: PC = TRUE ' Anfaenger ermitteln
END IF

Setzphase(1) = TRUE
Setzphase(2) = TRUE
Ziehen(1) = FALSE
Ziehen(2) = FALSE
NurMuehlen(1) = TRUE
NurMuehlen(2) = TRUE

Tastensperre(1) = FALSE
Tastensperre(1) = FALSE

' ***************************************************************************************************

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 700, 640, 32

'------ Icon in der Titelleiste ------
SCREENCONTROL 2, whandle '2 = fb.GET_WINDOW_HANDLE
SendMessage (CAST (HWND, whandle), WM_SETICON, ICON_SMALL, _
CAST( INTEGER, LoadImage ( GetModuleHandle (NULL), _
"MY_ICON", IMAGE_ICON, 0, 0, LR_COPYFROMRESOURCE  ) ) )
WINDOWTITLE "Mühle"

SPIELFELD

A = 0

DO

    GETMOUSE mausx, mausy,, mausk
    IF Mensch = 1 THEN
        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)

                                ' Bei Muehle einen Spielstein schlagen, sofern möglich!
                                IF Dran = 2 THEN
                                    IF gesperrteMuehle(A, 1) = 0 OR NurMuehlen(1) THEN
                                        IF Muehle THEN SCHLAGEN: ANZAHLGUELTIGERZUEGE
                                    ELSE
                                        IF Muehle THEN MessageBox(0, "Dieser Stein kann nicht genommen werden!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
                                    END IF
                                END IF
                                IF Dran = 1 THEN
                                    IF gesperrteMuehle(A, 2) = 0 OR NurMuehlen(2) THEN
                                        IF Muehle THEN SCHLAGEN: ANZAHLGUELTIGERZUEGE
                                    ELSE
                                        IF Muehle THEN MessageBox(0, "Dieser Stein kann nicht genommen werden!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
                                    END IF
                                END IF

                                ' Spielstein setzen!
                                IF Tastensperre(1) = 0 THEN
                                    IF Mensch AND Setzphase(Dran) AND Feld(A) = 0 AND AnzahlSteine(Dran) > 0 AND Muehle = 0 THEN SETZEN: NOTATION: ANZAHLGUELTIGERZUEGE: EXIT SELECT
                                    ' IF Muehle AND Dran = 1 THEN AnzahlZuege += 1: NOTATION
                                END IF

                                ' Startfeld - Figur auswählen
                                IF Feld(A) > 0  AND angeklickt = 0 AND Ziehen(Dran) THEN
                                    IF Ziehen(Dran) THEN PRUEFESTEINE
                                    IF Mensch AND Ziehen(Dran) AND Feld(A) = Dran AND Tastensperre(1) = 0 THEN
                                        angeklickt = 1
                                        FeldAlt = A
                                        GUELTIGEZUEGE

                                        ' 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

                                ' Zielfeld - Figur auf das Zielfeld ziehen
                                IF Feld(A) = 0 AND angeklickt = 1 THEN
                                    IF Ziehen(Dran) THEN PRUEFESTEINE
                                    GUELTIGEZUEGE
                                    IF Mensch AND Ziehen(Dran) AND Feld(A) = 0 AND Tastensperre(1) = 0 THEN
                                        IF gueltige(A) = 1 THEN
                                            FeldNeu = A
                                            NOTATION
                                            angeklickt = 0
                                            Feld(FeldAlt) = 0
                                            IF Dran = 1 THEN Feld(A) = 1
                                            IF Dran = 2 THEN Feld(A) = 2
                                            PRUEFEMUEHLE ' Prüfung, ob eine Mühle vorliegt
                                            STELLUNG
                                            SPIELER
                                            ANZAHLGUELTIGERZUEGE
                                            FeldNeu = 0
                                        ELSE
                                            FeldNeu = 0
                                            angeklickt = 0
                                        END IF
                                    END IF
                                END IF

                        END SELECT
                END SELECT

                ' Stein abwählen, damit man anderen Stein auswählen kann
            CASE 2
                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)
                                IF Feld(A) = dran AND Tastensperre(1) = 0 AND A = FeldAlt THEN
                                    Tastensperre(1) = 1
                                    angeklickt = 0
                                    FeldAlt = 0
                                    FeldNeu = 0
                                    STELLUNG
                                END IF
                        END SELECT
                END SELECT

            CASE 0
                Tastensperre(1) = 0
                Tastensperre(2) = 0
        END SELECT
    END IF

    LOCATE 72, 65: PRINT "Zuege: "; AnzahlZuege
    LOCATE 74, 65: PRINT "Remis: "; Remiszaehler



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

    IF AnzahlSteine(Dran) > 0 THEN
        Steinpuffer2 = IMAGECREATE(50,50)
        BLOAD (EXEPATH & "\Weiß.bmp", Steinpuffer2)
        FOR i = 1 TO (AnzahlSteine(1)*9) STEP 9
            PUT (i*6,520), Steinpuffer2, TRANS
        NEXT
        IMAGEDESTROY (Steinpuffer2)
        Steinpuffer2 = IMAGECREATE(50,50)
        BLOAD (EXEPATH & "\Schwarz.bmp", Steinpuffer2)
        FOR i = 1 TO (AnzahlSteine(2)*9) STEP 9
            PUT (i*6,580), Steinpuffer2, TRANS
        NEXT
        IMAGEDESTROY (Steinpuffer2)
    END IF
    SCREENUNLOCK

    ' Remis durch 50-Züge-Regel
    IF Remiszaehler > 49 THEN Won = 50: ENDE

    ' Spielende bei weniger als 3 Steinen
    IF Ziehen(Dran) THEN
        PRUEFESTEINE ' Anzahl der Steine ermitteln
        IF gesetzteSteine(Dran) < 3 OR Won > 0 THEN Won = Dran: ENDE
    END IF

    IF mausk = 0 THEN SLEEP 1, 1: Taste = 0

    ' Computer aktivieren!
    IF PC = 1 AND Muehle = 0 THEN COMPUTER

    tasten = INKEY

LOOP UNTIL tasten = CHR(27) OR tasten = CHR(255, 107) ' Programmende durch Mausklick auf X oder ESC - Taste

END

SUB SPIELFELD

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

END SUB

SUB SETZEN

    ' gewähltes Feld muss leer sein!
    IF Feld(A) = 0 THEN

        ' Steine nur anzeigen, wenn keine Mühle vorliegt
        IF Muehle = 0 THEN
            Steinpuffer2 = IMAGECREATE(50,50)
            IF Dran = 1 THEN BLOAD (EXEPATH & "\Weiß.bmp", Steinpuffer2)
            IF Dran = 2 THEN BLOAD (EXEPATH & "\Schwarz.bmp", Steinpuffer2)
            PUT (SX(A),SY(A)), Steinpuffer2, TRANS
            IMAGEDESTROY (Steinpuffer2)
            IF Dran = 1 THEN Feld(A) = 1
            IF Dran = 2 THEN Feld(A) = 2
        END IF

        ' Anzahl der Steine - Spieler 1
        Steine(1) = 9
        FOR i = 1 TO 24
            IF Feld(i) = 1 THEN Steine(1) -= 1
        NEXT
        AnzahlSteine(1) = Steine(1) - geschlagene(1)

        ' Anzahl der Steine - Spieler 2
        Steine(2) = 9
        FOR i = 1 TO 24
            IF Feld(i) = 2 THEN Steine(2) -= 1
        NEXT
        AnzahlSteine(2) = Steine(2) - geschlagene(2)

        ' sind alle Steine gesetzt, darf man ziehen!
        IF AnzahlSteine(1) < 1  THEN Setzphase(1) = FALSE: ziehen(1) = TRUE
        IF AnzahlSteine(2) < 1  THEN Setzphase(2) = FALSE: ziehen(2) = TRUE
    END IF

    ' Prüfung, ob eine Mühle vorliegt
    PRUEFEMUEHLE

    'nächster Spieler ist dran, wenn keine Mühle vorliegt!
    SPIELER

END SUB

SUB PRUEFESTEINE

    ' Anzahl der Steine - Spieler 1
    Steine(1) = 0
    gesetzteSteine(1) = 0
    FOR i = 1 TO 24
        IF Feld(i) = 1 THEN Steine(1) += 1: gesetzteSteine(1) +=1
    NEXT

    ' Anzahl der Steine - Spieler 2
    Steine(2) = 0
    gesetzteSteine(2) = 0
    FOR i = 1 TO 24
        IF Feld(i) = 2 THEN Steine(2) += 1: gesetzteSteine(2) +=1
    NEXT

END SUB


SUB SPIELER

    'nächster Spieler ist dran, wenn keine Mühle vorliegt!
    IF Muehle = 0 THEN
        ' IF AnzahlZuege = 9 AND Dran = 1 THEN NOTATION
        IF Dran = 1 THEN AnzahlZuege += 1: Remiszaehler += 1
        Dran += 1
        IF Mensch AND PC = 0 THEN Mensch = FALSE: PC = TRUE
    END IF
    IF Dran > 2 THEN Dran = 1

END SUB

SUB COMPUTER
END SUB

SUB SCHLAGEN

    ' Bei Mühle - schwarzen Spielstein entfernen
    IF Muehle AND Dran = 1 AND Feld(A) = 2 THEN
        Feld(A) = 0: STELLUNG
        M(1) -= 1
        geschlagene(2) += 1
        IF M(dran) = 0 THEN Muehle = 0: SPIELER
        IF mausk = 1 THEN Tastensperre(1) = TRUE
    END IF

    ' Bei Mühle - weißen Spielstein entfernen
    IF Muehle AND Dran = 2 AND Feld(A) = 1 THEN
        Feld(A) = 0: STELLUNG
        M(2) -= 1
        geschlagene(1) += 1
        IF M(dran) = 0 THEN Muehle = 0: SPIELER
        IF mausk = 1 THEN Tastensperre(1) = TRUE
    END IF

    ' Anzahl der Steine beim setzen - Spieler 1
    Steine(1) = 9
    FOR i = 1 TO 24
        IF Feld(i) = 1 THEN Steine(1) -= 1
    NEXT
    AnzahlSteine(1) = Steine(1) - geschlagene(1)

    ' Anzahl der Steine beim setzen - Spieler 2
    Steine(2) = 9
    FOR i = 1 TO 24
        IF Feld(i) = 2 THEN Steine(2) -= 1
    NEXT
    AnzahlSteine(2) = Steine(2) - geschlagene(2)

    ' Remiszähler auf 0 setzen
    Remiszaehler = 0

END SUB

SUB STELLUNG

    ' Spielsteine auf dem Bildschirm neu zeichnen
    SCREENLOCK
    SPIELFELD
    FOR i = 1 TO 24
        Steinpuffer2 = IMAGECREATE(50,50)
        IF Feld(i) = 1 THEN BLOAD (EXEPATH & "\Weiß.bmp", Steinpuffer2)
        IF Feld(i) = 2 THEN BLOAD (EXEPATH & "\Schwarz.bmp", Steinpuffer2)
        IF Feld(i) > 0 THEN PUT (SX(i),SY(i)), Steinpuffer2, TRANS
        IMAGEDESTROY (Steinpuffer2)
    NEXT
    SCREENUNLOCK

END SUB

SUB PRUEFEMUEHLE

    ' Mühlezähler auf 0 setzen
    m(1) = 0
    m(2) = 0

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


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

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

    ' Anzeige - Mühle
    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
    IF Ziehen(Dran) AND Steine(Dran) > 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

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

END SUB

SUB ANZAHLGUELTIGERZUEGE

    FOR i = 1 TO 24
        Anzahlgueltige(i) = 0
    NEXT

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


    ' Sind alle Spielsteine eingesperrt -> dann Ende
    IF Muehle = 0 AND Steine(Dran) > 3 THEN
        PRUEFESTEINE
        FOR i = 1 TO 24
            IF FELD(i) = 0 AND Anzahlgueltige(i) = 1 THEN Won = 0: EXIT SUB ELSE Won = Dran
        NEXT
    END IF

END SUB

SUB NOTATION
END SUB

SUB ENDE

    ' Gewinnanzeige
    IF Won = 2 THEN MessageBox(0, "Weiß hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
    IF Won = 1 THEN MessageBox(0, "Schwarz hat gewonnen!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
    IF Won = 50 THEN MessageBox(0, "Remis durch 50-Züge-Regel!", "Mühle", MB_ICONINFORMATION OR MB_SYSTEMMODAL OR MB_OK)
    END

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.