Вывожу игровое поле на консоль. Пользователь изменяет его, делая ход. Как считать эти изменения из консоли?

Пыталась считать с помощью stringIO. Почему-то функция getvalue() возвращает пустую строку (предполагаю, что дело в выводе управляющей последовательности). Подскажите, пожалуйста, как считать всё игровое поле после изменения его игроком? P.S. Будете тестировать - заранее ставьте раскладку qwerty, иначе по игровому полю перемещаться не получится

from pynput import keyboard
import os
import sys
from io import StringIO


def get_player(player = 0):
    player+=1
    if player>3:
        player = 1
    return player
chars = ' ░█♫'
player = get_player()

def printA():
    os.system('cls' if os.name == 'nt' else 'clear')
    print('Нажмите A,W,S или D, чтобы перемещаться по игровому полю\nНажмите Q чтобы сделать ход')
    print(f'Ход {player}-го игрока')
    for i in range(5):
        print(a[i][0], a[i][1], a[i][2], a[i][3], a[i][4])
    sys.stdout.write("\033[A")  # вверх


def readA():
    old_stdout = sys.stdout
    sys.stdout = buffer = StringIO()
    whatWasPrinted = buffer.getvalue()
    sys.stdout = old_stdout
    print(whatWasPrinted)  # Why not to print it?
   

a = [['_'] * 5, ['_'] * 5, ['_'] * 5, ['_'] * 5, ['_'] * 5]
printA()

x, y = 0, 0
def on_press(key):
    global player
    global x
    global y
    try:
        if (key.char == 'A' or key.char == 'a') and x>=0:
            sys.stdout.write("\033[2D")#влево
            x-=1
        elif (key.char == 'W' or key.char == 'w') and y<4:
            sys.stdout.write("\033[A")#верх
            y+=1
        elif (key.char == 'D' or key.char == 'd') and  x<4:
            sys.stdout.write("\033[2C")#вправо
            x+=1
        elif (key.char == 'S' or key.char == 's') and y>=0:
            sys.stdout.write("\033[B")#вниз
            y-=1
        elif key.char == 'Q' or key.char == 'q':
            player = get_player(player)
            sys.stdout.write(chars[player])
            sys.stdout.write("\033[C")
            readA()
            #printA()
            #print(listener.running)
    except AttributeError:
        pass


with keyboard.Listener(on_press) as listener:
    listener.join()

Ответы (0 шт):