Spiele

Hier ein paar selbst programmierte Spiele. Alle Programme hier sind Opensource-Freeware oder GPL und dürfen somit beliebig weitergegeben werden.


Übersicht

Spiel1 3D-Spiel in OpenGL, noch sehr provisorisch
Spectplorer Spektrum-Explorer, Variante von Spiel1
Sudoku Zahlenspiel
Lichter aus Puzzelspiel
Nimm Strategiespiel für 2 Personen (oder Person gegen Computer)
Memory
Rubikcube, Zauberwürfel
Schach
Fleissiger Biber
weitere Links

Spiel1

Dies ist mein erster Versuch ein 3D-Spiel mit OpenGL2 zu programmieren.
Noch in Entwicklung. (Sogar der Name ist noch provisorisch ;-)

Spiel1.tar.gz Linux-Version (Opensuse, Ubuntu, ...)
Spiel1.7z Windows-Version (Visual Studio 2019)
Spiel1exe.7z direkt ausführbare Windows-Version (da sollte kein Compiler nötig sein)


Spectplorer

Beispielbild GPX-Track Beispielbild mit Kartendarstellung

Spektrumexplorer. Dies ist eine Variante von Spiel1 mit der man xyz-Daten einlesen kann um dann in der entsprechenden Landschaft rumzulaufen.
Diese Daten können z.B. ein 2D-IR-Spektrum sein.
GPX-Dateien lassen sich auch einlesen um z.B. einen Track von der Läuferuhr dreidimensional darzustellen.
Bei der Darstellung von GPX-Dateien lässt sich noch eine Karte auf die Landschaft legen. (als Textur)

Spectplorer.tar.gz Linux-Version
Spectplorer.7z Windows-Version (Visual Studio 2019)
Spectplorerexe.7z direkt ausführbare Windows-Version
Spectplorerexe2022.7z Test: mit VisualStudio2022 übersetzte Version

objmodelexporter.7z Hilfsprogramm um OBJ-Dateien (Wavefront-Format) von Blender einzulesen
Um eine OBJ-Datei zu erhalten muss in Blender beim Exportieren unbedingt noch der Haken bei "Triangulate Faces" gesetzt werden.
Die mit objmodelexporter erhaltene .bmf-Datei kann nach Spectplorer/models/ kopiert werden, und dann in models/objekte.txt Position und Skalierfaktor für das Objekt gesetzt werden.
Allfällige Texturen (JPG oder PNG-Dateien) sollten nach Spectplorer/texturen/ kopiert werden.

wgs84.tar.gz Hilfsprogramm für Umrechnungen zwischen GPS- und Schweizer-Koordinaten
Dies wird benötigt um zwischen den Koordinaten von GPX-Dateien und den Koordinaten, die in den Karten von Swisstopo benutzt werden, umzurechnen.

Um aktuelle Karten automatisch zu downloaden wird noch OpenSSL und ImageMagick benötigt.
Hinweise zur Installation sind in "Liesmich.txt" zu finden.
ImageMagick wird immer gebraucht, OpenSSL nur wenn man selbst kompilieren will.


Sudoku

Bild eines 9*9-Sudokus

sudoku.tar.gz
Dies sind ein paar kleine Programme um Sudokus zu erstellen, zu drucken und automatisch zu lösen.

Aufruf-Beispiele:

> machsudoku -z123 >neu.txt
> printsudoku neu.txt neu.ps
> lpr neu.ps      ;den Ausdruck nehmen und von Hand lösen.
> sudoku neu.txt  ;Überprüfen der Lösung

Lichter aus

Bild von 5*5-Lampenfeld

Dies ist ein Spiel ähnlich lights-off oder lights-out.
Das Ziel dieses Spiels ist es in einem Feld von 5*5 Lampen alle Lichter zu löschen. Die Schwierigkeit dabei ist, dass wenn man ein Licht ein- oder aus-schaltet, die benachbarten Lichter auch ihren Zustand wechseln.

lichteraus.tar.gz
Das Programm funktioniert unter Linux und MacOSX und vielleicht auch andern Unix-Varianten.


Nimm

Nimm-Spiel auf LED-Matrix

Dieses Nimm-Spiel ist die Variante Mariabad in der Misereversion. Das heisst wer den letzten nimmt hat verloren.
Das ist das erste Beispielprogramm für die RGB-LED-Matrix, die mit Mikrocontrollern angesteuert wird. Das Programm läuft also auf einem dieser Mikrocontroller.

ledmatrix.tar.gz


Memory und Nimm mit Python

Memory-Spiel mit Aminosaeuren

Hier zwei kleine Spiele, mit der Programmiersprache Python. Um sie zu spielen sollte Python-2.7.6 oder neuer installiert sein.

Das Nimm-Spiel funktioniert gleich wie obige Variante mit der LED-Matrix, aber nur im Textmodus.

Das Memory-Spiel ist noch mit Optionen im Programm anpassbar.
In den Voreinstellungen werden Aminosäuren und die entsprechenden 1-Buchstaben und 3-Buchstaben-Abkürzungen verwendet. Es müssen also jeweils 3 Felder richtig ausgewählt werden um aufzudecken.
Man kann mit den Optionen aber auch einstellen, dass nur 2 aufgedeckt werden müssen.

pythonspiele.tar.gz


Rubiks Cube

Wuerfel und Abwicklung

Dies ist ein erster Versuch den Zauberwürfel auf dem Computer zu simulieren.
Mit Linker Maustaste in der Abwicklung geklickt dreht nach links, mit der Rechten Maustaste nach rechts, und mit mittlerer Maustaste wird gleich um 180 Grad gedreht.

rubik.tar.gz
Das Programm ist bisher nur unter Linux getestet. Könnte aber auch auf andern Systemen funktionieren.


Schach-Roboter

Alter Schachroboter Dies war mein erster Versuch - zu ungenau mit den Servomotoren.
Schachroboter Sensorfeld
Neue Version meines Schachroboters - mit Schrittmotoren und neuem Sensorfeld.

Dies ist mein zweiter Versuch zum Bau eines Schachroboters.
Der Mechanismus zum fahren in x-y-Richtung ist ähnlich wie die x-y-Plotter von Thingiverse. Die meisten Teile (ausser Stangen, Aluprofile, Kugellager) sind mit einem 3D-Drucker mit PLA- oder ABS-Kunststoff gedruckt. Die entsprechenden Blender-Dateien sind frei verfügbar.

Das alte Sensorfeld war mit 64 Magnetfeldsensoren (SS495A) versehen. Diese haben jedoch die Figuren nicht zuverlässig erkannt, besonders wenn nicht genau in Feldmitte platziert.
Das neue Sensorfeld ist jetzt mit Spulen aufgebaut. Eine Spule von etwa 200uH zusammen mit einem Kondensator von 3.3nF bildet einen Schwingkreis. Dieser wird dann beim Setzen von metallhaltigen Schachfiguren (Magnet, Unterlagscheibe oder Münze angeklebt) gestört, was sich leicht detektieren lässt. Das Schachbrett ist also mit 64 dieser Sensoren ausgestattet.

Neben dem einfachen selbst programmierten Schachprogramm funktioniert jetzt auch die UART-USB-Verbindung zu einem Linux-Computer auf dem Stockfish läuft.
Der verwendete Microcontroller ist der Atmega1284P. Das ist der AVR-Controller mit am meisten RAM (16KB).
SchemaControllerSchemaSensormatrix

Das Mikrocontroller-Programm funktioniert mit einer 4-Zeilen-LCD-Anzeige und 5 Tasten als Eingabe um Einstellungen wie z.B. Spielstärke zu machen. Die UART wird für die Verbindung zum Linuxcomputer verwendet (über ein myUSBtoUART-Modul).

Zur Ansteuerung der Schrittmotoren wurde ein zweiter Atmega1284P verwendet. Dazu noch 4 Schrittmotor-Module und 4 Sensoren um Endpositionen der Schrittmotoren festzustellen. Es wurde die UART1 verwendet um die Verbindung zum ersten Mikrocontroller zu realisieren (UART0 würde auch gehen).
Auf dem ersten Mikrocontroller wurde eine Software-UART für diese Verbindung verwendet, da die Leitungen für die zweite UART schon belegt waren.

Downloadbare Programme:
schachroboter2023.tar.gz   Programme für die Mikrocontroller
blender-schachroboter.tar.gz   Konstruktionsdateien als Blenderdaten
schach.tar.gz       Programm das unter Linux läuft

Das Schachprogramm, also der Teil der die Züge berechnet ist das gleiche auf dem Mikrocontroller und unter Linux. So kann man das Programm auch direkt auf einem Linux-Computer austesten.
Einige Kleinigkeiten funktionieren noch nicht:

Man kann auch eine beliebige Startstellung eingeben. Dazu wird der entsprechende Punkt im Startmenu ausgewählt, und dann wenn man eine Figur auf das Brett stellt merkt es das Sensorbrett und gibt ein Auswahlmenu zur Rückfrage um was für eine Figur es sich handelt.
Wenn man in einem Spiel versehentlich Figuren umwirft stellt sich noch das Problem sie wieder korrekt hinzustellen. Da könnte ein weiteres Unterprogramm das auf Tastendruck die aktuelle Stellung anzeigt hilfreich sein.

fleissiger Biber

BiberBild

Es sind die folgenden fleissigen Biber bekannt:
(Bei den Zuständen (Z) ist Halt nicht mitgezählt.)

  Z  Anzahl Einsen, benutzte Bandlänge, Anzahl Schritte
  1  1              2                   1
  2  4              4                   6
  
  3  5              5                   21  (wenn maximale Schrittzahl gesucht)
  3  6              6                   14  (wenn maximale Anzahl Einsen)
  3  5              7                   16  (wenn maximale Bandlänge)
  
  4  13             15                  107 (maximale Schritte und Anzahl Einsen)
  4  9              16                  61  (maximale Bandlänge)
  
  5  4098           12290               47176870  (nicht sicher ob das wirklich ein Fleissiger Biber ist)
  6  ??             ??                  ??        (im Spektrum angegebene Minimalwerte nicht überprüfbar)
  
Hier meine bisherigen Programme um fleissige Biber zu suchen:
fleissigerbiber.tar.gz Programme um beste Biber zu suchen (such*biber.cc)
ledmatrix.tar.gz Mikrocontroller-Programm fuer LED-Matrix (biber.cc)
Damit ist auch obige Tabelle überprüfbar.

Definitionen:


Links auf einige ältere Spiele

Ich hatte auch noch ein paar Spiele auf dem Amiga programmiert. Falls jemand interressiert ist, könnte ich die auch wieder mal ausgraben.
Letzte Änderungen: 20.Mai.2022 / 2.Apr.2023 / Rolf                                                                                 Validator