Appearance
4 — Bedingte Anweisungen
Einleitung
Nun wollen wir das Verhalten der animierten Figur beeinflussen können. Wir möchten solche Dinge in der Programmiersprache ausdrücken können:
- Wenn die Figur den rechten Rand erreicht, soll sie wieder am linken Rand erscheinen.
- Wenn die Figur den rechten Rand erreicht, soll sie anhalten.
- Wenn die Taste S gedrückt wird, soll sich die Figur nach unten bewegen.
Dazu müssen wir diese Sätze in die Programmiersprache übersetzen. Dies geschieht in drei Schritten.
Bedingte Anweisung
Diese Sätze sind immer nach dem gleichen Schema aufgebaut:
Wenn Bedingung, dann Anweisung.
In Python kann ein solcher Satz in eine Bedingte Anweisung übersetzt werden:
python
if Bedingung:
AnweisungDiese bedingte Anweisung funktioniert folgendermassen:
- Zuerst wird die Bedingung ausgewertet. Diese ist entweder wahr oder falsch.
- Wenn die Bedingung wahr ist, werden die folgenden, eingerückten Anweisungen ausgeführt.
- Wenn die Bedingung falsch ist, werden sämtliche eingerückten Anweisungen übersprungen.
Bedingungen
In Python können Bedingungen durch das Vergleichen von Werten entstehen. Zahlen werden in Python so vergleichen:
| Vergleich | Mathematik | Python |
|---|---|---|
| kleiner als | a<b | a < b |
| kleiner als oder gleich | a≤b | a <= b |
| grösser als | a>b | a > b |
| grösser als oder gleich | a≥b | a >= b |
Beispiel: Die Bedingung «Wenn die Figur den rechten Rand erreicht» kann so ausgedrückt werden:
python
figur.x > WIDTHDabei werden Streckenlängen verglichen. WIDTH ist die Distanz des rechten Rands vom linken Rand. figur.x ist die Distanz der Figur vom linken Rand. figur1.x kleiner als WIDTH, also hat figur1 hat den rechten Rand noch nicht erreicht. figur2.x grösser als WIDTH, weil hat figur2 den rechten Rand schon erreicht hat.

Achtung: Zuweisung ist kein Vergleich
Ein einzelnes Gleichheitszeichen = wird für die Zuweisung eines Werts an eine Variable verwendet. Es stellt keinen Vergleich dar. Die folgende Code funktioniert, macht aber keinen Vergleich:
python
if figur.x = WIDTH:
...✏️ Aufgabe 4.1 — Bedingungen formulieren
Formulieren Sie die folgenden Bedingungen als Vergleich:
figurhat den unteren Fensterrand erreicht.figur1ist unterhalb vonfigur2.figurist links der Mitte des Fensters.
Zusammensetzung
Nun können die oben erwähnten Sätze in die Programmiersprache übersetzt werden.
Beispiel 1
Wenn die Figur den rechten Rand erreicht, soll sie wieder am linken Rand erscheinen.
Die Teile «den rechten Rand erreicht» und «am linken Rand erscheinen» können so übersetzt werden:
| Deutsch | Python |
|---|---|
| «den rechten Rand erreicht» | figur.x > WIDTH |
| «am linken Rand erscheinen» | figur.x = 0 |
Schliesslich werden die Teile zu einer bedingten Anweisung zusammengefasst:
python
figur.x = figur.x + 1
if figur.x > WIDTH:
figur.x = 0Beispiel 2
Wenn die Figur den rechten Rand erreicht, soll sie anhalten.
Diesen Satz muss zuerst umformuliert werden:
Wenn die Figur den rechten Rand noch nicht erreicht hat, soll sie sich nach rechts bewegen.
Jetzt können die Teile «den rechten Rand noch nicht erreicht» und «sich nach rechts bewegen» übersetzt werden:
| Deutsch | Python |
|---|---|
| «den rechten Rand noch nicht erreicht» | figur.x < WIDTH |
| «sich nach rechts bewegen» | figur.x = figur.x + 1 |
Schliesslich werden die Teile zu einer bedingten Anweisung zusammengefasst. Im Gegensatz zum ersten Beispiel steht hier die Anweisung, welche die Figur nach rechts bewegt, innerhalb der bedingten Anweisung.
python
if figur.x < WIDTH:
figur.x = figur.x + 1Vollständiges Beispiel
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur.draw()
def update():
figur.x = figur.x + 1
if figur.x > WIDTH:
figur.x = 0
WIDTH = 800
HEIGHT = 600
TITLE = "Mein tolles Game"
hintergrundfarbe = 11, 102, 35
figur = Actor("figur_01.png")
figur.y = HEIGHT / 2
pgtrun.go()✏️ Aufgabe 4.2 — Rennen
Ändern Sie Ihr Programm mit dem Rennen der vier Figuren folgendermassen:
- Eine Figur soll wieder am linken Rand erscheinen, wenn sie den rechten Rand erreicht hat.
- Die zweite Figur soll am rechten Rand stehenbleiben.
- Die dritte Figur soll sich von rechts nach links bewegen und beim Erreichen des linken Rands wieder am rechten Rand erscheinen.
- Die vierte Figur soll sich von oben nach unten bewegen und beim Erreichen des unteren Rands stehenbleiben.
→ Python: Bedingte Anweisungen
Tastatursteuerung
Nun soll eine Figur mit der Tastatur gesteuert werden können. Auch dazu werden bedingte Anweisungen verwendet.Mit Hilfe spezieller Bedingungen kann in Pygame Turbo überprüft werden, ob eine bestimmte Taste gerade gedrückt wird. So ist die Bedingung keyboard.a genau dann wahr, wenn die Taste A gedrückt wird.
Wenn die Taste S gedrückt wird, soll sich die Figur nach unten bewegen.
Um die oben stehende Anweisung in Python auszudrücken, schreiben wir also
python
if keyboard.s:
figur.y = figur.y + 2✏️ Aufgabe 4.3 — Tastatursteuerung
Ändern Sie Ihr Programm, sodass sich eine Figur mit der Tastatur steuern lässt. Typischerweise werden die WASD-Tasten oder die Pfeiltasten für die Steuerung verwendet.
| Richtung | Variante WASD | Variante Pfeiltasten |
|---|---|---|
| nach links | keyboard.a | keyboard.left |
| nach rechts | keyboard.d | keyboard.right |
| nach oben | keyboard.w | keyboard.up |
| nach unten | keyboard.s | keyboard.down |
✏️ Aufgabe 4.4 — Was passiert am Rand?
Wenn Sie die Figur über den Fensterrand hinaussteuern, verschwindet sie einfach. Es gibt zwei verschiedene Möglichkeiten, wie sich die Spielfigur am Rand sinnvoll verhalten kann:
- Sie bleibt stehen.
- Sie erscheint auf der anderen Seite des Fensters.
Entscheiden Sie sich für eine Variante und programmieren Sie diese.