Impressum
< Teil 2 Inhalt Teil 4 >

Laufendes O in Python - Teil 3

Nachdem in Teil 2 die Bewegungsfreiheit eingeschränkt wurde, wollen wir in diesem Teil dem Benutzer auch die Grenzen des Spielfelds anzeigen.
Hierfür müssen wir einen Rahmen zeichnen, der außerhalb des Spielfeldes liegt. D.h. wir zeichnen einen Rahmen von (4,4) bis (16,16).
Das kann man mit vielen print_at(..) Befehlen erreichen, einfacher geht es mit einer Schleife.

Rahmen mit einer While-Schleife

Der Rahmen besteht aus 4 "Linien". Diese stellen den oberen, unteren und linken, rechten Rand dar.
Die obere Linie geht von (4,4) bis (16,4).
Die untere Linie geht von (4,16) bis (16,16)
Um diese Linien zu zeichnen brauchen wir eine Schleife die eine Variable i von 4 bis 16 zählt und an jede Position (i,4) und (i,16) ein Zeichen (z.B. eine #) ausgibt.
Der Rand oben und unten:
i=4
while i<=16:
    print_at(i,4,'#')
    i=i+1

i=4
while i<=16:
    print_at(i,16,'#')
    i=i+1
Spielfeld mit Rand oben und unten.
Da beide Schleifen über die gleichen Werte laufen, kann man sie zusammenfassen:
i=4
while i>=16:
    print_at(i,4,'#')
    print_at(i,16,'#')
    i=i+1
Die Linien links und rechts kann man analog zu den oberen und unteren machen.
Die linke Linie geht von (4,4) bis (4,16).
Die rechte Linie geht von (16,4) bis (16,16)
Der einzige Unterschied ist, dass sich jetzt die x-Koordinate ändert, während die y-Koordinate gleich bleibt.
i=4
while i<=16:
    print_at(4,i,'#')
    print_at(16,i,'#')
    i=i+1
Spielfeld mit Rand links und rechts
Wenn man beide Code-Teile nacheinander ausführt, hat man einen kompletten Rand. Ist das Feld gleich viele Zeichen breit wie hoch kann man sogar alle 4 Linien in einer Schleife zeichnen:
i=4
while i<=16:
    print_at(i,4,'#')
    print_at(i,16,'#')
    print_at(4,i,'#')
    print_at(16,i,'#')
    i=i+1

                    

Rahmen mit einer For-Schleife

Für unseren Rahmen muss man nur Werte Schrittweise hochzählen. Hier von 4 bis 16. Das geht super in einer for-Schleife:
for i in range(4,17): print_at(i,4,'#')
                

Der Code mit vier for-Schleifen, für jede Linie eine. Man kann natürlich alles in eine for-Schleife packen.
for i in range(4,17): print_at(i, 4,'#')
for i in range(4,17): print_at(i,16,'#')
for i in range(4,17): print_at( 4,i,'#')
for i in range(4,17): print_at(16,i,'#')

Der Code

Der komplette Code mit Rahmen: