Mühlespiel
Projektzusammenfassung | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Mühlebrett:
Mühle
Spielsteine
#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:
Dateimanager |
---|
Es wurden bisher keine Sources abgelegt. |