Patience

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail

 

PotiPat.DLL : Programmieren von Patiencen

Patience sind abseits der großen Spiele immer ein schöner Pausenfüller (manchmal sogar im Büro). Die Programmierung von Patiencen kann schon recht anspruchsvoll sein. Sie wäre ohne die excellente QCard32.DLL von Stephen Murphy (www.telusplanet.net/public/stevem) auch nicht gelungen. Projektdokumentation : PotiPatCS.PDF.

Bei der Einarbeitung in das OO-Konzept von Visual Basic.NET entstand die Idee, vorhandene VB6-Programme nach Visual Basic.NET "umzuschreiben", das ist nicht gelungen. Entstanden ist eine komplett neue Klassenbibliothek, auf derer Basis dann zwei alte (Grand Napoleon und MoltkePlus) und eine neue, aber allseits bekannte : Solitär entstanden. Schwerpunkt war die Patience-Logik (die ursprüngliche Absicht - Einarbeitung - geriet dabei oft ein wenig aus den Augen). Nun wurde die Klassenbibliothek auch in C# übertragen. Ebenfalls übertragen wurde eine Mini-Version von Solitär und die Grand Napoleon.

Das Konzept der Klassenbibliothek basiert auf der Einteilung des Spielfeldes (des "grünen" Tisches auf dem die Patience ausgelegt wird) in vier Spielbereiche : Ablage, Auslage, Keller und Talon für die es z.Zt. jeweils eine parametrisierbare Klasse gibt : Ablage48, AuslageV, LiFoStack, KartenPaket. Darunter liegt die Klassen Card:BaseCard, PoolCard:BaseCard und BaseCard die jeweils eine Karte beschreiben. In der Klasse QCard32Pool werden die 104 Karten eines vollständigen Patience-Spiels gehalten. QCard32Pool ist im wesentlichen eine C#-gerechte Kapselung der Qcard32.DLL, die ihrerseits die Karten zeichnet, auf der Spielfläche lokalisiert und deren statische und dynamische Daten verwaltet.

Die Klassen für die Spielbereiche können an die Spiellogik angepaßt werden (Anzahl Plätze der Ablage, Anzahl "Leitern" der Auslage .... ). Sie haben eine Reihe gemeinsamer Eigenschaften ( Left, Top, Range As Rectangle zur Beschreibung der geometrischen Lage auf der Spielfläche und Methoden (AddCard, RemoveCard ....Paint) zum Umgang mit den Karten (Paint : wiederherstellen des Kartenbildes bei Form_Paint). Hinzu kommen spezielle Methoden (IsDescending / IsAscending ...) zur Prüfung, ob angelegt werden kann und z.B. Shuffle zum Mischen des Kartendecks. Eigenschaften und Methoden sind unabhängig von der Spiellogik.

Die Klasse PotiPatience ist eine (recht kleine) abstrakte Klasse, die als Basis für die Spiellogik dient. Typisch sind hier die Methoden : SpielStarten, Refresh, StartZiehen, WeiterZiehen, EndeZiehen und KarteAblegen. Sie werden von der Hauptform der Patience-Anwendung in den entsprechenden Ereignisroutinen (z.B. MouseDown, MouseMove und MouseUp) aufgerufen.

Download

Die Klassenbibliothek PotiPatCS.DLL und die Patiencen Grand Napoleon und Solitär sind als Sources in dem Päckchen PotiPatCS.ZIP zusammengefaßt (einschl. QCard32.DLL).

Stand : 07.09.2004