GUI
Implementierung der GUI-Klasse
Die GUI ist aus der Sicht des Anwenders das wichtigste Programmelement, da sie die Funktionalität des Spiels auf (hoffentlich) ansprechende Weise visualisieren soll. Ein großer Vorteil der objektorientierten Modellierung ist, das wir die GUI-Klasse beliebig schreiben und austauschen können, solange die selben Methoden benutzt werden. Das heißt, wir können unser Spiel in einer grafischen Benutzeroberfläche oder auch einer Konsolenversion darstellen, wir können Sie in schwarz/weiß implementieren oder mit vielen bunten Farben. Mit dem nötigen Know-how könnte man also richtig professionelle, vielleicht sogar dreidimensionale Visualisierungen entwickeln! Wir möchten uns hier der Einfachheit halber auf eine GUI in der klassischen Python-Konsole beschränken. Für eine 'richtige', benutzerfreundliche GUI seien diese Kapitel empfohlen (Achtung: Fortgeschrittene Programmierkenntnisse erforderlich!): Link.
Aufgabe 1
Implementiere die Methode outputField(self,field)
, die ein Feld bekommt und es mit Buchstaben und
Zahlen auf dem Bildschirm ausgeben soll (s. Bild).
(Hinweis: Der Befehl print ("mein Text") gibt einen beliebigen Text aus. Variablen können mit einem '+' hinzugefügt werden: print ("MeinAlter: " + variableAlter). Jeder Print Befehl benutzt eine neue Zeile. Striche können mit aneinandergehängten Unterstriche realisiert werden.)
Der Einfachheit halber geben wir unser Spielfeld zeilenweise aus. Dh. Pro Zeile ein Print Befehl ( = 6 für jede 6 Zeilen) + 5 (für je einen Strich).
Name des Spielers und Spielmodus
Als nächstes brauchen wir die Methoden, die den Spieler Namen (getName(self,playerNr
)) und Spielmodus
(getGameMode(self,name)
) eingeben lassen. Dies soll über die Konsole geschehen. Der Befehl input
liefert
das gewünschte, indem er einen Text ausgibt, hinter dem dann eine Eingabe des Benutzers erwartet wird.
Auf diese Weise wird die Methode getName
so implementiert:
def getName(self, playerNr):
name = input('Namen für Spieler ' + playerNr + ": ")
return name
Aufgabe 2
Implementiere getGameMode(self,name)
. Beachte hierbei, dass der Spieler nur aus Modus 0 (Zufall)
und 1 (Eingabe) wählen kann und anderen Eingaben nicht akzeptiert werden dürfen.
(Hinweis: Überlege, wie lange der Befehl input
wiederholt werden muss...)
Aufgabe 3
Implementiere nun die Methode getDraw(self, name)
, die den (echten) Spieler die Spalte wählen lässt,
in die er einen Stein schmeißen möchte. Die Methode muss die Spalte zurückgeben, die der Spieler gewählt
hat. Beachte hierbei:
- Der Spieler darf nur Spalten von 1 bis 6 wählen, andere Eingaben dürfen nicht akzeptiert werden.
- Die Zeilen und Spalten werden im Spielfeld-Array von 0 an gezählt! Also muss bei einer Eingabe von bspw. 3, die Zahl 2 zurückgegeben werden.
Quellen
- [1]: Spielfeld - Urheber: SD BRI - Lizenz: inf-schule.de