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

Solitär Patience

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.

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).

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 Klasse Card, die eine Karte beschreibt. In der Klasse QCard32Pool werden die 104 Karten eines vollständigen Patience-Spiels gehalten. QCard32Pool ist im wesentlichen eine Visual Basic.NET-gerechte Kapselung der Qcar32.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 und die drei Patiencen Grand Napoleon, Moltke und Solitär sind als Sources in dem Päckchen PotiPat.ZIP zusammengefaßt (einschl. QCard32.DLL). Beim Extrahieren sollte man nach Möglichkeit die >C:\ Root< wählen. Entpackt wird dann in >C:\PotiPad< Das hat den Vorteil, das die Pfade im Projekt (die absolut angeben werden müssen) stimmen, sonst ist besonders der Pfad unter Verweise entsprechend zu korrigieren. Das Projekt PotiPat.SLN kann nur kompiliert - nicht ausgeführt - werden, wenn man es ändern will sollte es in die Projektmappe einer Patience aufgenommen werden (an die Verweise denken). Visual Basic.NET Standard kann wohl keine Klassen.DLLs erstellen, hier sollte man es in das Patience-Projekt selber aufnehmen.

Stand : 22.05.2004