Hallo liebe VBP-Community,
ich habe mich die letzten Tage damit beschäftigt, das Kartenspiel „Arschloch“ (oder Präsident) mit C# auf den PC zu bringen.
Mit dem Datenmodell bin ich eigentlich relativ zufrieden, mit der Rendering-Umsetzung und der Spielsteuerung überhaupt nicht. Mein Ziel war es eigentlich, dass Programm so umzusetzen, dass es Schritt für Schritt verbessert und erweitert werden kann; also bspw. die Grafik verbessert, dann die AI „schlauer“ gemacht werden kann, oder dass mit erweiterten Decks gespielt werden kann etc.
Jetzt meine Frage: Wie kann ich, zuerst einmal, die „Spielgeschäftslogik“ so umsetzen, dass diese flexibler wird, heißt also, mit einer unterschiedlichen Anzahl von Spielern, sowohl menschlichen, als auch Computerspielern, umgehen kann? Momentan bin ich hier mit Async/Await in einer ziemlichen Spaghetti-Switch-While-Konstruktion, die mir suboptimal und unflexibel erscheint; wie würdet ihr das Ganze umsetzen? Die Regeln sind eigentlich recht einfach, deshalb nehme ich auch an, dass es eine relativ schlanke Umsetzung geben müsste!?
Das Problem mit meiner HumanPlayer-Klasse ist auch, dass alle Events in der Main-Form abgearbeitet werden, während die AiPlayer-Klasse schon ihre play()-Methode hat. Das verstärkt den „Spaghetti-Effekt“ nochmal – soll ich hier die Events an das Objekt weiterleiten oder gibt es eine bessere Lösung? Gerade wenn es einmal mehrere HumanPlayer geben soll, wird die momentane Logik an ihre Grenzen stoßen.
Nun zum zweiten großen Punkt: Dem Rendering. Momentan wird komplett unflexibel alles beim Paint-Event gezeichnet. Das ist nicht besonders schick und verlangt nach einer Menge Refreshes. Später sollen auch noch Animationen dazu kommen, deshalb habe ich mich gefragt, ob es überhaupt sinnvoll ist, hier mit GDI+ zu arbeiten. Eigentlich ist es grafisch ja nicht aufwendig, aber ich weiß nicht, wie gut die GDI-Performance bei Animationen ist. Generell wüsste ich ehrlichgesagt nicht, wie sich das alles mit dem Datenmodell geschickt verknüpfen lässt. Hat da jemand Ideen/Tipps/Links für ein Konzept?
Tut mir leid für den langen Text, aber ich hoffe, ihr wisst jetzt, bei was ich Hilfe brauche, wenn nicht, dann gerne noch einmal nachhaken!
ich habe mich die letzten Tage damit beschäftigt, das Kartenspiel „Arschloch“ (oder Präsident) mit C# auf den PC zu bringen.
Mit dem Datenmodell bin ich eigentlich relativ zufrieden, mit der Rendering-Umsetzung und der Spielsteuerung überhaupt nicht. Mein Ziel war es eigentlich, dass Programm so umzusetzen, dass es Schritt für Schritt verbessert und erweitert werden kann; also bspw. die Grafik verbessert, dann die AI „schlauer“ gemacht werden kann, oder dass mit erweiterten Decks gespielt werden kann etc.
Jetzt meine Frage: Wie kann ich, zuerst einmal, die „Spielgeschäftslogik“ so umsetzen, dass diese flexibler wird, heißt also, mit einer unterschiedlichen Anzahl von Spielern, sowohl menschlichen, als auch Computerspielern, umgehen kann? Momentan bin ich hier mit Async/Await in einer ziemlichen Spaghetti-Switch-While-Konstruktion, die mir suboptimal und unflexibel erscheint; wie würdet ihr das Ganze umsetzen? Die Regeln sind eigentlich recht einfach, deshalb nehme ich auch an, dass es eine relativ schlanke Umsetzung geben müsste!?
Das Problem mit meiner HumanPlayer-Klasse ist auch, dass alle Events in der Main-Form abgearbeitet werden, während die AiPlayer-Klasse schon ihre play()-Methode hat. Das verstärkt den „Spaghetti-Effekt“ nochmal – soll ich hier die Events an das Objekt weiterleiten oder gibt es eine bessere Lösung? Gerade wenn es einmal mehrere HumanPlayer geben soll, wird die momentane Logik an ihre Grenzen stoßen.
Nun zum zweiten großen Punkt: Dem Rendering. Momentan wird komplett unflexibel alles beim Paint-Event gezeichnet. Das ist nicht besonders schick und verlangt nach einer Menge Refreshes. Später sollen auch noch Animationen dazu kommen, deshalb habe ich mich gefragt, ob es überhaupt sinnvoll ist, hier mit GDI+ zu arbeiten. Eigentlich ist es grafisch ja nicht aufwendig, aber ich weiß nicht, wie gut die GDI-Performance bei Animationen ist. Generell wüsste ich ehrlichgesagt nicht, wie sich das alles mit dem Datenmodell geschickt verknüpfen lässt. Hat da jemand Ideen/Tipps/Links für ein Konzept?
Tut mir leid für den langen Text, aber ich hoffe, ihr wisst jetzt, bei was ich Hilfe brauche, wenn nicht, dann gerne noch einmal nachhaken!
Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer