Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mühlespielprogramm für 2 Spieler

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 13.10.2024, 23:06    Titel: Mühlespielprogramm für 2 Spieler Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 347

BeitragVerfasst am: 15.10.2024, 13:22    Titel: Antworten mit Zitat

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 verlegen
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 15.10.2024, 19:04    Titel: Antworten mit Zitat

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 verlegen

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 347

BeitragVerfasst am: 15.10.2024, 20:47    Titel: Antworten mit Zitat

Was für ein Format hat die DB, bzw was ist das für eine DB.
Vielleicht findest du dafür Bibliotheken. verwundert

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 verwundert
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 15.10.2024, 23:40    Titel: Antworten mit Zitat

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. verwundert

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 verwundert


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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 347

BeitragVerfasst am: 16.10.2024, 22:48    Titel: Antworten mit Zitat

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 mit den Augen rollen
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 16.10.2024, 23:13    Titel: Antworten mit Zitat

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 mit den Augen rollen
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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 347

BeitragVerfasst am: 17.10.2024, 06:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1237
Wohnort: Ruhrpott

BeitragVerfasst am: 17.10.2024, 16:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 19.10.2024, 10:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz