|
|
Spass mit
Python, selbstprogrammiert |
|---|
|
|
Es können mit unserem schönen Python nämlich auch Spiele programmiert werden. Das gibt uns auch gleich die Gelegenheit, einige andere Widgets aus dem Tkinter - Sortiment einzusetzen. Als erstes sei hier mal ein kleines einfaches Spiel zum Zeitvertreib gezeigt, dass im Volksmund auch oft als "Schiebefax" bezeichnet wurde. Es beruht auf Tkinter und nutzt hier keine besonderen grafischen Elemente, sondern arbeitet mit einfachen Widgets, die auch für grafische Bedienoberflächen genutzt werden. Hauptelement ist ein Frame. Das Aussehen eines Frames kann sehr unterschiedlich gestaltet werden. Dieser Umstand wird hier ausgenutzt um das scheinbare Verschieben der Bausteine vorzutäuschen. Gleichzeitig wird in diesem Programm ein Beispiel gezeigt, wie man Widgets während der Laufzeit entstehen lassen kann. Dies ist hier besonders sinnvoll, da wohl niemand sich die Mühe machen will und "händisch" ein ganzes Feld von Widgets erzeugen will. Außerdem besteht so die Möglichkeit die Größe des Spiels sogar währendd er Laufzeit zu bestimmen, also ob das Spielfeld z.B. 3 x 3 oder 5 x 5 groß ist. Im hier gezeigten Beispiel wurde 4 x 4 fest eingestellt. Außerdem lässt sich hier noch eine Besonderheit zeigen, dass nämlich die Tkinter - Widgets unter verschiedenen Betriebssystemen abweichend ausfallen können. Der hier dargestellte Schnappschuß ist eine Variante für Linux. Unter Windows ist das Programm mit gleichem Quelltext lauffähig, aber die breite der bausteine muss leicht nachgebessert werden. Das gelingt durch kurzes Probieren recht schnell. Deshalb verzichte ich hier für Windows einen anderen Quelltext einzustellen oder sogar während des Programmlaufes eine Breiteneinstellung abhängig vom darunterlaufenden Betriebssystem vorzunehmen. So etwas lässt sich auf Wunsch von jederman selbst nachbessern. Hier nun erstmal ein Bild: ![]() Das Programm findet man hier. Als weitere Demonstration eines Spieles möchte ich hier gern mal ein kleines Streichholzspiel vorstellen. Erstmal wollen wir es spielen und uns danach anschauen, wie es programmiert werden könnte. Wie sind nun die Regeln? Die Grundstellung besteht aus 4 Haufen mit den Mengen 7, 5, 3 und 1. Im nachfolgenden Bild ist genau diese noch vollständige Ausgangsstellung gezeigt.
Von einem dieser Haufen können die beiden Gegner abwechselnd eine beliebige Anzahl von vorhandenen Hölzern wegnehmen. Welchen Haufen man wählt ist freigestellt, aber es darf bei einem Zug immer nur von einem einzigen Haufen genommen werden. Für wen nur noch das letzte Holz übrig ist und er es nehmen muss, weil er nun mal am Zug ist, der hat leider verloren. Beispiel: A nimmt von Haufen 2 erst mal 3 Hoelzer weg Damit man sich seinen Zug richtig überlegen kann und damit man auch richtig sieht, welchen Zug denn der Computer gerade macht, besteht das Wegnehmen der Hölzer jeweils aus 2 Phasen. In der ersten Phase wird das Holz nur markiert, liegt aber noch da (erkennbar an der roten Färbung des Holzes). In der zweiten Phase verschwindet es dann wirklich und der andere Spieler ist dran. Hier im gezeigten Demoprogramm erfolgt das Markieren mit der Taste "Weglegen" und das richtige entfernen dann mit der Taste "Ziehen". Das ganze erfolgt immer in der Reihe, die durch den Radiobutton eingestellt ist. Zufrieden bin ich mit dieser Behelfslösung noch nicht. Inzwischen habe ich herausgefunden, wie man im Canvas-Widget die Position des Mauszeigers im Moment des Klickens herausholt. Auf diese Weise könnte das Markieren der Hölzer viel eleganter gehen. (Diese Prommvariante steht hier) Es ist auch schon die Routine fertig, die den optimalen Antwortzug des Computers ermittelt. Für diesen Zwischenschritt, den man bereits richtig spielen kann, ist schon etwas fertig, das hier liegt. Es läuft erstmal im Textmodus und enthält keine Eingabeüberprüfung und keinen Zufallsgenerator für die verschiedenen möglichen Computerzüge. Gestartet wird mit dem Modul "spielen.py". Wer einige male gespielt hat wird sich wundern, dass er immer verliert. Nun ja, der Computer macht keine Fehler (bis ihm eine Bremse bald Zügel anlegt). Wer gerne eine Chance hätte, für den einen kleinen Tip. Gewinnen kann man derzeit nur, wenn man den Computer beginnen lässt. Dann muss man aber immer noch höllisch aufpassen, denn beim kleinsten Fehler reisst der Computer das Spiel herum! Noch überlege ich, wie ich den virtuellen Gegner abbremse, vielleicht fällt mir noch so etwas wie eine "Intelligenzbremse" ein, die dann erlaubt, verschiedene Schwierigkeitsgrade einzustellen.
|