|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 13.10.2024, 23:06 Titel: Mühlespielprogramm für 2 Spieler |
|
|
Ich habe die letzten Tage, mein altes Mühlespielprogramm (Mühlespielstudie) neu geschrieben und so programmiert, dass es den offiziellen Regeln des Welt-Mühlespiel-Dachverbandes entspricht!
Das heißt: 3-fache Stellungswiederholung wird erkannt, 30-Züge-Regel wird erkannt. Werden beim Setzen 2 Mühlen gleichzeitig geschlossen, so darf man 2 Steine nehmen. Aus der Mühle darf man keinen Stein nehmen, es sei denn, es sind nur noch Mühlen vorhanden.
Man kann auch schon Züge zurücknehmen oder die Partie neu starten. Mit der rechten Maustaste, kann man Spielsteine wieder abwählen!
Es fehlt lediglich ein Computergegner und bisher eine Zugliste! Die Zugliste muss ich noch programmieren. Hat jemand Lust, einen Computergegner bzw. eine perfekt spielende Datenbank zu programmieren?
Link zum Quellcode: https://www.freebasic-portal.de/projekte/muehlespiel-100.html
Andere nützliche Links (Mühlespielprogramm bzw. Datenbank):
https://www.mad-weasel.de/download/Der%20perfekte%20M%C3%BChle-Computer.pdf
https://www.mad-weasel.de/muehle.html
https://github.com/madweasel/Muehle
https://deep-muehle.de/ _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 347
|
Verfasst am: 15.10.2024, 13:22 Titel: |
|
|
Mir ist aufgefallen, dass du wahnsinnig viele If-Blöcke in deinem Quelltext hast.
Ich bin nicht zuhause, und hab deswegen noch nichts ausprobiert.
Ich glaube mit meinem heutigen Wissen würde ich das Mühlefeld als Graphen realisieren und dann viel zu komplizierten Kram machen _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 15.10.2024, 19:04 Titel: |
|
|
SpionAtom hat Folgendes geschrieben: | Mir ist aufgefallen, dass du wahnsinnig viele If-Blöcke in deinem Quelltext hast.
Ich bin nicht zuhause, und hab deswegen noch nichts ausprobiert.
Ich glaube mit meinem heutigen Wissen würde ich das Mühlefeld als Graphen realisieren und dann viel zu komplizierten Kram machen |
Sind recht viele IF-Blöcke drin, das stimmt. Eine bessere Idee hatte ich nicht.
Es gibt bisher nur 1 Mühlespielprogramm (BrillantMill), was den offiziellen Regeln entspricht! Leider ist dieses Programm nur für 1 Rechner gedacht und muss käuflich erworben werden. Ich habe mittlerweile mehrere Datenbanken (insgesamt 3-4) auf dem Rechner drauf. Ich habe keine Ahnung, wie ich an den Inhalt mit FreeBasic rankomme? Das muss doch irgendwie möglich sein? _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 347
|
Verfasst am: 15.10.2024, 20:47 Titel: |
|
|
Was für ein Format hat die DB, bzw was ist das für eine DB.
Vielleicht findest du dafür Bibliotheken.
Ich habe versucht, es zum Laufen zu bekommen, hat aber irgendwie nicht geklappt. Vielleicht findet er die Bibliotheken nicht richtig. Eine Fehlermeldung bekomme ich nicht, aber die Grafiken werden mir nicht angezeigt, dort wo zu Beginn das Feld erscheinen sollte, ist nur ein pinkes Quadrat. Und rechts daneben ein paar Button ("neue partie" "<" ">").
Leider bin ich in Freebasic überhaupt nicht mehr bewandert. Laut Pfadnamen habe ich Freebasic 1.05.0-win32 und die FBIde 0.4.6r4.
Ich verstehe auch nicht, warum die Bildernamen in deiner Projektseite andere sind, als die, die in deinem Quelltext untergebracht sind _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 15.10.2024, 23:40 Titel: |
|
|
SpionAtom hat Folgendes geschrieben: | Was für ein Format hat die DB, bzw was ist das für eine DB.
Vielleicht findest du dafür Bibliotheken.
Ich habe versucht, es zum Laufen zu bekommen, hat aber irgendwie nicht geklappt. Vielleicht findet er die Bibliotheken nicht richtig. Eine Fehlermeldung bekomme ich nicht, aber die Grafiken werden mir nicht angezeigt, dort wo zu Beginn das Feld erscheinen sollte, ist nur ein pinkes Quadrat. Und rechts daneben ein paar Button ("neue partie" "<" ">").
Leider bin ich in Freebasic überhaupt nicht mehr bewandert. Laut Pfadnamen habe ich Freebasic 1.05.0-win32 und die FBIde 0.4.6r4.
Ich verstehe auch nicht, warum die Bildernamen in deiner Projektseite andere sind, als die, die in deinem Quelltext untergebracht sind |
Danke für die Info! Installiere bitte mal den aktuellsten Compiler. Eventuell, macht der Probleme? Folgende Dateinamen müssen es sein, damit das Programm läuft:
Spielbrett = Muehlebrett.bmp
Spielstein Weiß = Weiß.bmp
Spielstein Schwarz = Schwarz.bmp
Koordinaten für Mausbutton = Button.txt
Spielbrett und Koordinaten, befinden sich ganz unten, nach dem Quellcode! Bei Gelegenheit, werde ich mal das Ganze mit ausführbare Datei und allen anderen Dateien hochladen. Aber fürs hochladen reicht es noch nicht. Ist bisher nur eine Studie! Fehlt noch zu viel im Programm. Leider...
Keine Ahnung, was für ein Format für die Datenbanken verwendet werden? Ob eine Bibliothek verwendet werden kann, kann ich nicht sagen? Die Programme, wurden alle mit einer anderen Programmiersprache geschrieben. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 347
|
Verfasst am: 16.10.2024, 22:48 Titel: |
|
|
Ich war nun auf freebasic.net und habe mir hoffentlich das aktuellste geholt, dein Spiel wird bei mir immer noch nicht richtig dargestellt, ich habe auch die entsprechenden Bild-Pfade umbenannt.
Da komme ich leider nicht weiter.
Der Code insgesamt ist leider auch sperlich dokumentiert und weist viele Wundervariablen auf (x, xx, xxx). Das macht es einem natürlich nicht leicht, sich damit zu befassen.
Langsam bekomme ich Lust alles neu zu schreiben _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 16.10.2024, 23:13 Titel: |
|
|
SpionAtom hat Folgendes geschrieben: | Ich war nun auf freebasic.net und habe mir hoffentlich das aktuellste geholt, dein Spiel wird bei mir immer noch nicht richtig dargestellt, ich habe auch die entsprechenden Bild-Pfade umbenannt.
Da komme ich leider nicht weiter.
Der Code insgesamt ist leider auch sperlich dokumentiert und weist viele Wundervariablen auf (x, xx, xxx). Das macht es einem natürlich nicht leicht, sich damit zu befassen.
Langsam bekomme ich Lust alles neu zu schreiben | Bei mir funktioniert das Programm korrekt! Keine Ahnung, woran das liegt? Ich habe es auf 2 unterschiedlichen Rechner mit Windows 10 und Windows XP getestet. Keinerlei Probleme. Schon seltsam?
Edit:
Die Steine haben eine Größe von 50x50
Das Brett hat eine Größe von 510x510 _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 347
|
Verfasst am: 17.10.2024, 06:25 Titel: |
|
|
Ich denke auch, dass der Fehler eher bei mir liegt. Irgendwas falsch konfiguriert oder so...
Vielleicht komme ich am Wochenende mal richtig dazu mich damit zu befassen. So einen Klassiker, wie Mühle einer ist, schaue ich mir gerne an. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1237 Wohnort: Ruhrpott
|
Verfasst am: 17.10.2024, 16:20 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Sind recht viele IF-Blöcke drin, das stimmt. Eine bessere Idee hatte ich nicht. |
Man könnte das mit einem zweidimensionalen Array lösen. Diese Methode hat außerdem den Vorteil, daß das Programm nicht jede der IF-Zeilen abfragen muss. Ich habe mal eine der SUBs entsprechend umgeschrieben. Wenn ich mich nicht vertippt habe, müsste es funktionieren.
Code: | 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
Dim As Integer FeldSetup(1 To ..., 1 To 4) = {{2, 10, 0, 0}, _
{1, 3, 5, 0}, _
{2, 15, 0, 0}, _
{5, 11, 0, 0}, _
{2, 4, 6, 8}, _
{5, 14, 0, 0}, _
{8, 12, 0, 0}, _
{5, 7, 9, 0}, _
{8, 13, 0, 0}, _
{1, 11, 22, 0}, _
{4, 10, 12, 19}, _
{7, 11, 16, 0}, _
{9, 14, 18, 0}, _
{6, 13, 15, 21}, _
{3, 14, 24, 0}, _
{12, 17, 0, 0}, _
{16, 18, 20, 0}, _
{13, 17, 0, 0}, _
{11, 20, 0, 0}, _
{17, 19, 21, 23}, _
{14, 20, 0, 0}, _
{10, 23, 0, 0}, _
{20, 22, 24, 0}, _
{15, 23, 0, 0}}
For x As Integer = 1 To 4
If FeldSetup(FeldAlt, x) <> 0 Then
gueltige(FeldSetup(FeldAlt, x)) = 1
EndIf
Next
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 |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 19.10.2024, 10:44 Titel: |
|
|
grindstone hat Folgendes geschrieben: | ALWIM hat Folgendes geschrieben: | Sind recht viele IF-Blöcke drin, das stimmt. Eine bessere Idee hatte ich nicht. |
Man könnte das mit einem zweidimensionalen Array lösen. Diese Methode hat außerdem den Vorteil, daß das Programm nicht jede der IF-Zeilen abfragen muss. Ich habe mal eine der SUBs entsprechend umgeschrieben. Wenn ich mich nicht vertippt habe, müsste es funktionieren.
Code: | 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
Dim As Integer FeldSetup(1 To ..., 1 To 4) = {{2, 10, 0, 0}, _
{1, 3, 5, 0}, _
{2, 15, 0, 0}, _
{5, 11, 0, 0}, _
{2, 4, 6, 8}, _
{5, 14, 0, 0}, _
{8, 12, 0, 0}, _
{5, 7, 9, 0}, _
{8, 13, 0, 0}, _
{1, 11, 22, 0}, _
{4, 10, 12, 19}, _
{7, 11, 16, 0}, _
{9, 14, 18, 0}, _
{6, 13, 15, 21}, _
{3, 14, 24, 0}, _
{12, 17, 0, 0}, _
{16, 18, 20, 0}, _
{13, 17, 0, 0}, _
{11, 20, 0, 0}, _
{17, 19, 21, 23}, _
{14, 20, 0, 0}, _
{10, 23, 0, 0}, _
{20, 22, 24, 0}, _
{15, 23, 0, 0}}
For x As Integer = 1 To 4
If FeldSetup(FeldAlt, x) <> 0 Then
gueltige(FeldSetup(FeldAlt, x)) = 1
EndIf
Next
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 |
Gruß
grindstone | Vielen herzlichen Dank für die Info! Ich habe es ausprobiert. Es funktioniert! Auf so eine Idee, wäre ich nie gekommen. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|