Die Webseiten der Fachschaft Informatik am ERG Saalfeld
Hilfeseite - Vorbereitungen zu "Türme von Hanoi"
print_at-Anweisung
Unter Pascal gibt es die goto-Anweisung, um einen String an eine vorgegebene Stelle zu plazieren. Das kenne ich von Python nicht bzw. habe ich so nicht gefunden.
Um diese Anweisung zu simulieren, habe ich unter https://rosettacode.org/wiki/Terminal_control/Cursor_positioning#Python
Folgendes gefunden:
from ctypes import *
STD_OUTPUT_HANDLE = -11
class COORD(Structure):
pass
COORD._fields_ = [("X", c_short), ("Y", c_short)]
def print_at(r, c, s):
h = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
windll.kernel32.SetConsoleCursorPosition(h, COORD(c, r))
c = s.encode("windows-1252")
windll.kernel32.WriteConsoleA(h, c_char_p(c), len(c), None, None)
print_at(6, 3, "Hello")
Diesen Quelltext kopiere ich komplett in mein Programm "Hanoi", wobei ich natürlich das Beispiel auskommentiere. Für die linke obere Ecke
erhalte ich durch ausprobieren als Koordinaten 0;0, d.h. die Anweisung print_at(0, 0, "X") setzt ein X in die linke obere Ecke.
Bei mir schreibt die Anweisung print_at(0, 121, "X") ein "X" in die rechte obere Ecke.
Bei mir schreibt die Anweisung print_at(22, 0, "X") ein "X" in die linke untere Ecke.
Bildschirm löschen
Um den Bildschirm zu säubern, greife ich auf das Modul "os" zurück und kann dann den Befehl "cls" aufrufen.
import os
# Bildschirm löschen
os.system('cls')
Cursor ab- und anschalten
Bei so einer Animation stört der Cursor. Um den abzuschalten, findet sich unter https://rosettacode.org/wiki/Terminal_control/Hiding_the_cursor#Python Folgendes:
print("\x1b[?25l") # hidden
print("\x1b[?25h") # shown
Pause-Anweisung
Um das Tempo zu steuern, verwende ich die Anweisung "sleep".
import time
time.sleep(1/10) # eine Zehntel Sekunde Pause
zurück
© ERG Saalfeld - HD. Kirmse 25.04.2023
|