Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

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

Spielfeld mit einigen Nullen und Einsen[1]

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:

Quellen

X

Fehler melden

X

Suche