Использование проклятий Python 3 только в небольшой части терминала
Есть ли способ, с помощью которого проклятия можно инициировать, чтобы они занимали только часть экрана, позволяя обычным отпечаткам выходить над ним?
Таким образом, в этом приведенном примере все нормальные операторы печати будут отправляться на обычный терминал и сохранятся после завершения программы.
import curses
from curses import wrapper
from time import sleep
import random
def main(stdscr):
stdscr.nodelay(True)
stdscr.clear()
participants = 5
positions = dict()
for i in range(participants):
positions[i] = 0
completed = 0
game_winner = -1
while True:
_c = stdscr.getch()
round_winner = random.randint(0, participants-1)
winner_position = positions[round_winner]
if winner_position < 10:
positions[round_winner] = winner_position + 1
stdscr.clear()
for i in range(participants):
position = positions[i]
stdscr.addstr(i, 0, str(i+1) + ": ")
stdscr.addstr(i, position+3, 'x')
if position == 10:
if game_winner < 0:
game_winner = i + 1
print(str(i + 1) + " completed the race!")
positions[round_winner] = position + 1
completed += 1
sleep(1)
if completed >= len(positions):
break
print("The winner is " + str(game_winner) + "!")
wrapper(main)
1 ответ
Вопрос в том
Есть ли способ, с помощью которого проклятия можно инициировать, чтобы они занимали только часть экрана, позволяя обычным отпечаткам выходить над ним?
на самом деле нет: вы можете сказать проклятиям притворяться, что он использует меньший экран, но в этом случае он будет использовать верхнюю часть экрана (установив LINES
переменная окружения) и / или левая часть (путем установки COLUMNS
), но это не помешает ему использовать стирание, которое очищает "неиспользуемую" часть экрана.