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