Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WinForms-Framework für (2-Personen) Karten-/Brettspiele
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

WinForms-Framework für (2-Personen) Karten-/Brettspiele

beantworten | zitieren | melden

Beschreibung:
Vor ca. 5 Jahren hatte ich in C++ angefangen, Karten- bzw. Brettspiele umzusetzen. Nach und nach entstand daraus dann ein Framework, mit dem ich inzwischen 15 Spiele umgesetzt habe (Screenshots: www.bitel.net/dghm1164/screenshots). An dem 16. Spiel (Dominion) arbeite ich derzeit...

Diese Spiele können entweder in der Solo-Variante oder mittels TCP/IP über LAN bzw. Internet gespielt werden. Einige dieser Spiele verfügen auch über eine KI (z.B. Labyrinth, Brillant ("Einfach genial"), Skat, Swim).

Nun hat mich vorletztes Wochenende ein Freund gefragt (als ich ihm die Vorschau zu "Dominion" gezeigt habe), ob ich das Spiel denn in C# entwickeln würde? Und da dachte ich mir: ja, das wäre ein cooles Projekt. Also habe ich die letzten beiden Wochen am Wochenende bzw. abends (nach der Arbeit) mich hingesetzt und das C++ Projekt (das ich mit dem Borland Builder und dessen VCL entwickelt hatte) nach C# und .NET umgesetzt (und bis auf die Netzwerk-Serialisierung konnte ich es 1:1 übernehmen!).

Und als vorzeigbares Spiel habe ich mich für "Swim" (auf deutsch: Schwimmen bzw. 31 http://de.wikipedia.org/wiki/Schwimmen_%28Kartenspiel%29) entschieden, da es auch über eine KI verfügt.

Und (Bauern-) Skat werde ich demnächst nachreichen...


Neues GameBase-Projekt erstellen:

Eine kurze Beschreibung findet sich in der zu den "GameBase"-Sourcen beiliegenden Textdatei "#Neues Projekt.txt" (nächster Beitrag).

Um ein neues Projekt zu entwickeln, gibt es das GameTemplate-Verzeichnis, welches schon über alle elementaren Formulare sowie Klassen verfügt. Es brauchen dann nur noch die einzelnen Klassen ausprogrammiert werden...
(die meisten der Spiele habe ich innerhalb von 1 bis 3 Wochen (im Urlaub) entwickelt - nur das GUI-Design sowie das Anzeigen der Spielkarten bzw. Infos ist etwas aufwändiger - es soll ja auch noch einigermaßen hübsch aussehen -).

Zum Entwickeln eines neues Spiels kann man immer mal in das Beispielprojekt "Swim" schauen, um zu sehen, wie es dort implementiert wurde.

Lizenz
Diese GameBase-Library kann frei verwendet werden. Änderungen bzw. Bugfixes sollten jedoch nur in Absprache mit mir erfolgen, so daß ich dann eine neue Version hier reinstellen kann.

Die mit der GameBase-Lib entwickelten Programme dürfen jedoch nicht kommerziell vertrieben werden. Es wäre jedoch schön, wenn sie hier im Forum präsentiert würden... (beachtet jedoch die Lizenzen, falls ihr ein kommerziellen Karten- bzw. Brettspiel adaptiert!!!).

...
Und nun hoffe ich, daß sich einige (Spiele-)Programmierer angesprochen fühlen und Lust haben, ein eigenes Spiel zu entwickeln (man sollte jedoch schon mindestens 1/2 - 1 Jahr sicher in C# und dem .NET-Framework programmieren können).

Aus Gründen der bestmöglichen Kompatibilität habe ich die GameBase-Lib noch komplett in C# sowie .NET 2.0 entworfen.
Eigene Projekte können selbstverständlich mit neueren Versionen entwickelt werden -)

So und nun viel Spaß damit!

Edit: aktualisierte GameBaseLib (für Skat s.u.)

Jetzt ist auch das GameTemplate-Projekt sowie die Textdatei "#Neues Projekt.txt" hier enthalten.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Th69 am .
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Und hier nun die Sourcen zu der GameBase-Lib.

Edit: Fehler in der IO.ReadEntry<T>()-Methode behoben (beim Skat-Projekt gemerkt, s.u.)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Hiermit kann man jetzt schwimmen gehen...

Edit: einen Klammer-Fehler bei der KI bzgl. Operator-Präzedenz beseitigt (KI hat immer bei 21 getauscht)

Danke auch an die 18 Leute, die bisher das Spiel runtergeladen haben (der Zähler wird ja wieder zurückgesetzt...)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Und zuletzt nun die Sourcen für "Swim".

Edit: und auch hier die aktualisierten Sourcen (auch wenn sich nur eine Zeile in der KI.cs geändert hat -)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Hier nun das 2. Projekt: "(Bauern-)Skat". Die Umsetzung von C++ hat nur ca. 4 Stunden gedauert (nur der eine Fehler in der IO-Klasse für das Laden von Enum-Werten hat mich etwas mehr Zeit gekostet).
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Und hierfür auch die Sourcen:
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Es gib nun eine neue Version von Skat. Ein Benutzer hat mir den Vorschlag gemacht, im Zweipersonenspiel (LAN/Internet) den Trumpf auswählen zu lassen (anstatt zufällig zu bestimmen).
Außerdem wollte ich immer schon eine Statistik einbauen, so daß ich das auch gleich mit umgesetzt habe. Es gibt jetzt je Spielvariante (Solo/2-Personen) und in der Solo-Variante auch noch je Schwierigkeitsgrad eigene Zähler (werden unter rechts angezeigt: Games, Wins, Remis und Points in absoluten und prozentualen Werten).
Attachments
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

Themenstarter:

beantworten | zitieren | melden

Und auch hierzu die Sourcen.
Attachments
private Nachricht | Beiträge des Benutzers