Solitaire revisited

vorhergehende Artikel in: Revisited Rants
20.05.2016

Ich überlege schon lange daran, eins meiner ersten Programme, die ich je in der Sprache Java geschrieben habe, neu und besser (oder zumindest anders) zu implementieren.

Als ich mit diesen Überlegungen begann, wollte ich eigentlich eine neue Programmiersprache lernen. Im Lichte der neuesten Entwicklungen habe ich dies immer wieder verschoben (Es sollte eine Web-Anwendung mit Javascript und so werden).

Jetzt habe ich noch einmal darüber nachgedacht und bin mit mir übereingekommen, dass ich zunächst mal damit anfange, mir Gedanken über die Architektur einer solchen Anwendung zu machen. Danach könnte ich das Spiel nochmal in Java ordentlich implementieren und daran anschließend dann auch andere Programmiersprachen ausprobieren. Vielleicht ließe sich daraus dann auch ein interessanter Programmierkurs entwickeln?

Zunächst einige Festlegungen: Wir legen das Konzept einer Karte fest - Diese hat eine Farbe und eine Wertigkeit. Weitere Eigenschaften einer Karte sind vier visuelle Charakteristika: Die Vorder- und Rückseitenbilder: jeweils vollständig und teilverdeckt.

Ein weiteres Konzept ist das einer Ablage auf dem Tisch, Diese Ablage wird bestimmt durch folgende Eigenschaften: Oberste offene Karte (Sonderfall: Ablage leer) und welche Karte auf diese oberste Karte gelegt werden darf. Weiterhin wird festgelegt, ob eine Karte von dieser Ablage wegbewegt werden darf und falls ja, ob dies nur die oberste Karte sein darf oder eine der anderen offen liegenden oder sogar eine verdeckt liegende.

Wenn wir das gute alte Klondike benutzen, dann lassen sich diese Eigenschaften wie folgt definieren:

Stapel
Hier liegen die verdeckten Karten, die eine nach der anderen umgedreht als oberste auf die Reserve gelegt werden. Nur die oberste verdeckte Karte darf selektiert werden. Keine Karte darf auf den Stapel gelegt werden.
Reserve
Das ist der Platz, auf den die umgedrehten Karten des Stapels gelegt werden. Hier dürfen nur Karten abgelegt werden, die wenn selektiert verdeckt sind. Nur die oberste umgedrehte Karte darf selektiert werden.
Ziel
Diese vier Ablagen nehmen sie sortierten Karten auf. Keine Karte darf von hier entfernt werden. Hier dürfen nur umgedrehte Karten, die die obersten auf ihrer aktuellen Ablage sind, abgelegt werden. Die nur, wenn sie entweder ein Ass sind und die Ablage leer ist oder wenn sie dieselbe Farbe der bereits dort liegenden aufweisen und in der Wertigkeit genau eins über der obersten bereits dort liegenden Karte liegen.
Auslage
Die Auslage besteht insgesamt aus sieben Stapeln, die anfangs aus einer bis acht KArten bestehen, von denen jeweils die oberste initial umgedreht ist. Von dieser Ablage können Karten selektiert werden, die bereits umgedreht sind. Dies muss nicht unbedingt die oberste sein. Hier dürfen Karten, die bereits umgedreht sind angelegt werden. Die nur, wenn sie entweder ein Ass sind und die Ablage leer ist oder wenn sie dieselbe Farbe der bereits dort liegenden aufweisen und in der Wertigkeit genau eins über der obersten bereits dort liegenden Karte liegen.

Diese eher flüchtig hingeworfene Skizze einer allgemeinen Spielmechanik für Solitäire-ähnliche Games wird nun zunächst in Java implementiert, um herauszufinden, ob man mit diesen lokalen Regeln tatsächlich ein solches Spiel fertigen kann.

Anschließend wird dann versucht, eine andere Sprache zur Umsetzung zu nutzen und weitere Solitäire-Spiele umzusetzen.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.