Hallo zusammen,
ich möchte euch gerne mein neues Projekt vorstellen.
Angelehnt an eine Aufgabe aus dem Informatikunterricht (mit Java 😛) habe ich ein kleines Programm entwickelt, mit dem sich zwei (oder auch mehr) Programmierer "duellieren" können.
Wie das geht?
Die GUI besteht prinzipiell aus einem Spielfeld mit Start + Stop Button. Auf dem Spielfeld sind die Spielfiguren, der Wolf und der Jäger, in Form von zwei verschiedenfarbigen Symbolen zu sehen.
Ziel des Wolfs ist es, dem Jäger möglichst lange davonzulaufen; Ziel des Jäger ist es, den Wolf möglichst schnell zu fangen.
Sprich: Ein Spieler programmiert das Verhalten des Wolfs, der andere das des Jägers.
Hierzu habe ich einige Events implementiert, wie z. B. den Zusammenprall mit einer Spielfeldkante oder der Ausführung einer Bewegung. Die Objekte kennen jeweils nur die Entfernung zum anderen Objekt (und sollten auch nichts anderes benutzen, das ist die Regel 😉 ) und sollen anhand der Veränderungen an der Entfernung ihre Wege so anpassen, wie es für sie am günstigsten ist. Zudem können sie natürlich auf die eigenen Eigenschaften wie Richtung und Position zugreifen.
Hier nochmal die Regeln im Überblick:
Alles in allem finde ich das Prinzip ganz interessant, es gibt ja auch schon andere Spiele mit ähnlichen Ansätzen.
Ich hoffe, dass sich einige von euch ebenfalls für diese Art des "Computerspiels" begeistern kann und ihr evtl. weitere Codedateien für Wolf und/oder Jäger hier der Allgemeinheit zugänglich macht 😉
Meine Bitte: Wenn ihr etwas verändern & hochladen wollt, dann bitte NUR Wolf und Jäger. Werden die anderen Klassen verändert, bekommen wir bald Probleme mit der Kompatibiliät der Codeschnipsel 😁
Ihr könnt mir gern auch eine Mail an stes94@ymail.com schicken.
Frohes Schaffen!
stes
...und hier noch schnell ein Screenshot:
Wer sich an KI Programmierung erfreut und diese gerne gegen andere KI anderer Programmierer antreten lassen möchte sollte sich vielleicht mal AntMe anschauen.
Dieses Framework wurde durch einen MS Entwickler in seiner Freizeit mit C# erschaffen und besitzt neben einer Visualisierung auch eine statistische Auswertung.
Und das wichtigste vor allem es besitzt bereits eine große Community
Das Projekt vom Threadersteller geht ebenfalls in diese Richtung, daher der kleine Hinweis 😉
Hallo stes,
mir sind spontan folgende Verbesserungsvorschläge für dein Projekt eingefallen (ohne dass ich mir den Code angeschaut habe):*Lagere die Verhaltenssteuerung in ein Interface aus und gib dem Jäger und Wolf eine Instanz davon. Die entsprechenden Events können dann die Funktionen aus dem Interface aufrufen.
So vermeidest du, dass Programmierer an der Programmbasis und den EventHandlern "herumpfuschen" können. Das hast du zwar in Textform in deinem Post verboten, kann aber auch über solches Design erzwungen werden.
*Damit man den Basiscode gar nicht anfassen braucht, kannst du ein Plugin-System implementieren. Jeder Duellant braucht dann nur seine Assembly mit dem Verhalten zur Verfügung zu stellen. Das Hauptprogramm (dein Simulator) kann diese DLLs laden und das Duell simulieren.
Wenn du das Verhalten sowieso schon in Interfaces ausgelagert hast, ist ein Plugin-System nicht mehr weit weg.
*Ich habe deinen Code nicht gesehen, aber für den Einstieg ist es sicherlich nützlich, wenn du Beispiel-Verhaltensmuster dazu legst, mit denen man direkt auch testen kann. *Halte die Einstiegshürden so gering wie möglich. D.h. biete schon vorgefertigte Solutions / Projekte zum Erstellen seines Verhaltens an, damit der geneigte Programmierer nur noch den Code für das Verhalten in die Funktionsrümpfe gießen muss.
Zu diesem Punkt zählt auch (vielleicht sogar vor allem) ein sinnvoll gewähltes Interface-Design.
Mfg NeuroCoder
Hallo NeuroCoder,
danke für die Tipps, ich werde mich demnächst mal dransetzen 😉
Besonders die Verlagerung der benutzerspezifischen Verhaltensweisen in DLLs halte ich für eine gute Idee.
Die aktualisierte Version werde ich dann demnächst hier posten..
Gruß
stes
Hi, das ganze erinnert mich an Codewars. Allerdings funktioniert Codewars über Sockets mit einem entsprechenden Protokoll. Das Projekt ist richtig Klasse. Man programmiert Bots die man mit bestimmten Fähigkeiten ausstattet und aufeinander loslassen kann. Die Map konnte dabei verschiedene Hindernisse wie Mauern und Wasser enthalten. Im Gegensatz zu Ant! oder deinem Projekt funktioniert CodeWars mit allen Programmiersprachen die Sockets beherrschen. Wer hat da nicht mal Lust den hochnäsigen PHP-Bot in den Boden zu stampfen 😄
Leider wird das Projekt nicht mehr richtig weitergeführt 😦
Gruß
Levi