Impressum
< Teil 3 Inhalt

Laufendes O in Python - Teil 4

Nachdem in Teil 3 einen Rahmen gezeichnet haben, wollen wir uns jetzt Punkte holen.
Um Punkte zu bekommen brauchen wir etwas zu fressen. Dazu verwenden wir einen *, den wir an die Position (gx,gy) schreiben. Diese Position soll zufällig aber innerhalb des Spielfelds sein.
Immer wenn wir den Stern fressen, bekommen wir einen Punkt. Danach soll der Stern wieder an einer anderen zufälligen Position auftauche.

Import und Variablen

Wir brauchen eine Variable für Die Variablen müssen vor der Schleife initialisiert werden. Für Zufallszahlen müssen wir mit import random den Zufallszahlengenerator importieren. Dann können wir mit gx=random.randint(5,15) eine zufällige Koordinate im Spielfeld erzeugen.
Initialisierung aller Variablen

# Spieler-Variablen für Position und Punkte
x=5
y=5 
punkte=0

# Gegner-Varaiblen für Position 
gx=random.randint(5,15)
gy=random.randint(5,15)

Anzeige des Gegners

Der Gegner muss in jedem Schleifendurchlauf angezeigt werden, genau so wie der Spieler selbst. Die Reihenfolge ist wichtig:
Wenn der Spieler vor dem Gegner gezeichnet wird, dann überdeckt der * das O, wenn sie auf dem gleichen Feld stehen.
Wenn der Spieler nach dem Gegner gezeichnet wird, dann überdeckt das O den *, wenn sie auf dem gleichen Feld stehen.

Die zweite Variante ist besser, da der Spieler sonst seine Figur nicht sieht, wenn er den * frisst. Das ist irritierend.
Spieler und Gegner zeichnen:
gotoxy(gx,gy) # zur Gegner-Position
print("*")    # Gegner zeichnen
gotoxy(x,y)   # zur Spieler-Position
print("O")    # Spieler zeichnen

Gegner fressen und Punkte bekommen

Immer wenn der Spieler den Gegner frisst bekommt er einen Punkt.
Das ist immer der Fall, wenn der Spieler und der Gegner die selbe Position haben. D.h. die x-Koordinate und die y-Koordinate müssen von beiden gleich sein.
Sind die Koordinaten gleich, so muss die Variable punkte um eins erhöht werden und der Gegner einen neue Position erhalten.
Kollisionserkennung:
if x==gx and y==gy:
    punkte=punkte+1 # einen Punkt mehr
    # neue Position für den Gegner
    gx=random.randint(5,15)
    gy=random.randint(5,15)

Punkte anzeigen

Die Punkte liegen bis jetzt nur in der Variablen punkte. Damit der Spieler sie auch wahrnimmt benötigen wir eine Ausgabe. Diese sollte neben dem Spielfeld stehen (z.B. bei (18,6)).
Da sich der Wert der Punkte immer ändert, muss diese Ausgabe in der Schleife immer wieder neu ausgegeben werden.
Ausgabe der Punkte:
gotoxy(18,6)  
print("Punkte: "+str(punkte))

Der Code

Der komplette Code mit Rahmen: