• Offizieller Beitrag

    Ich habe mal wieder ein kleines Spiel programmiert. Einen MasterMind-Clone.

    Ich nenne es MasterCode. Falls das Spiel nicht bekannt ist, hier die

    Spielregeln:

    Bei Spielstart generiert das Programm einen 4stelligen Code aus 6 Farben (Doppelte sind erlaubt). Diese sind ganz oben zu sehen (natürlich erstmal verdeckt).

    Der Spieler muss nun versuchen diesen Code zu erraten. Dazu kann er mit den Buttons am unteren Spielfeldrand einen Code eingeben.

    Wenn man versehentlich eine "falsche" Farbe angeklickt hat, so gibt es den "Undo"-Button auf der rechten Seite, mit der man die letzte Eingabe zurücknehmen kann.

    Sind die 4 Felder gefüllt, erscheint ein "Haken"-Button, den man zur Bestätigung des Code anklicken muss.

    Nach der Bestätigung wertet das Programm die Spieler-Eingabe aus. Für jede richtige Farbe, die dazu am richtigen Platz steht, bekommt man einen schwarzen Pin. Für jede richtige Farbe, die aber am falschen Platz steht, bekommt man einen weißen Pin.

    Kein Pin heißt, alle Farben sind falsch. Vier schwarze Pins markieren das Spielende (logischerweise), denn dann hat man den Code ja erraten.

    Insgesamt hat man 12 Versuche. Wenn man den Code bis dahin nicht erraten hat, hat man das Spiel verloren.

    Das Spiel passt sich automatisch in der Größe dem Monitor an, von dem es gestartet wird (Mausposition).

    Ich habe das mit diversen Auflösungen getestet (von 640x480 bis 2560x1440). Es sollte aber auch mit noch höheren Auflösungen funktionieren. Bei den niedrigen Auflösungen sieht das Ganze nicht so schön aus, weil die Grafiken alle extrem runterskaliert werden müssen.

    Aber ich denke, dass die meisten wohl über Monitore von 1024x768 und darüber verfügen werden. :)

    Screenshot:

    Screenshot.png

    Im ZIP-Archiv (Anhang) findet ihr das Script, sowie alle benötigten Includes. Die Grafiken sind wieder BASE64-Codiert in "Ressources.au3". Deswegen, mal wieder, ein Dankeschön an UEZ für den "File to Base64 String Code Generator"! :rock:

  • Hallo Oscar !

    Zum Build der MasterCode.au3 benötigt man offenbar eine AutoIt-Version GRÖßER 3.3.14.0. , korrekt ?

    Ich erhalte beim 'Build' : error: _WinAPI_GetMonitorInfo(): undefined function

    Laut Changelog https://www.autoitscript.com/autoit3/docs/history.htm hat sich diesbzgl. seit der 3.3.14.0. eigentlich nichts geändert. In der Funktionsliste der WinAPIGdi.au3 (3.3.14.0) wird die _WinAPI_GetMonitorInfo() aber nicht aufgeführt, daher folgerichtig -> undefined function :).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Zum Build der MasterCode.au3 benötigt man offenbar eine AutoIt-Version GRÖßER 3.3.14.0. , korrekt ?

    Das kann gut sein! Ich benutze v3.3.14.5 und damit funktioniert das.

    Ich konnte jetzt im Changelog auch nichts derartiges finden, aber wenn da nur die eine Funktion fehlt:

  • Ich erhalte beim 'Build' : error: _WinAPI_GetMonitorInfo(): undefined function

    Bis AutoIt 3.3.14.2 ist die Funktion _WinAPI_GetMonitorInfo in WinAPISys.au3 zu finden, ab AutoIt 3.3.14.3 wurde sie nach WinAPIGdi.au3 verschoben.

    Es sollte also reichen, wenn du folgende Zeile in dem Script hinzufügst:

    #include <WinAPISys.au3>

  • Hallo Oscar !

    'Danke' für das Feedback .

    Ich konnte jetzt im Changelog auch nichts derartiges finden, aber wenn da nur die eine Funktion fehlt:

    Ja, im vorliegenden Fall lag es nur an der _WinAPI_GetMonitorInfo().

    Wer also (wie ich) mit einer älteren AutoIt-Version (z.B. 3.3.14.0.) arbeitet, und nicht updaten darf/will, der kann die o.a. Funktion einfach an das Ende des Skriptes MasterCode.au3 kopieren.

    Generell, und das sieht Oscar sicher auch so, ist das Filetieren von Standard-UDFs aber nicht der beste Weg.

    Ich werde die Gelegenheit jedenfalls nutzen, endlich mal auf die 3.3.14.5. zu gehen ^^.

    Edit :

    Bitnugger : Danke, so geht es natürlich auch :).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hi!

    Wunderschön gemacht!:klatschen:

    Und bei "großen" Monitoren ist es doppelt so schön :o)

  • Hi Oscar !

    Feedback :

    Nachdem ich nun einige Runden gedreht habe, auch von mir ein 'fettes Lob' für dieses kurzweilige Spiel :thumbup:

    Fehler konnte ich keine entdecken.

    Eine kleine Historie, d.h. Anzahl der erfolgreichen/nicht erfolgreichen Spiele, könnte man noch einbauen, muss aber nicht sein ;)

    Danke und Gruß

    Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo,

    auch von mir mal ein Lob ;)

    Allerdings kommt bei mir eine "Fehlermeldung" (kompiliert wird trotzdem; AutoIt Version 3.3.14.5):

    ! Invalid AutoIt3Wrapper directive Keyword:#AutoIt3Wrapper_Res_ProductName with value:MasterCode

  • Allerdings kommt bei mir eine "Fehlermeldung" (kompiliert wird trotzdem; AutoIt Version 3.3.14.5):


    ! Invalid AutoIt3Wrapper directive Keyword:#AutoIt3Wrapper_Res_ProductName with value:MasterCode

    Hallo Moombas !

    Ersetze im Quellcode die Zeile :

    #AutoIt3Wrapper_Res_ProductName=MasterCode

    mal durch :
    #AutoIt3Wrapper_Res_Field=ProductName|MasterCode

    Edit :

    Die Meldung ! Invalid AutoIt3Wrapper directive... taucht dann nicht mehr auf (zumindest bei meiner 3.3.14.0).

    'Kompilieren' geht ja, wie bereits von alpines angemerkt, trotzdem - ist also nur ein Schönheitsfehler ;)

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."