Python curses - изменение размера / прокрутка экрана - PullRequest
0 голосов
/ 28 октября 2018

Я создаю RPG-игру для терминала.Недавно из-за проблем с CMD (мерцание при обновлении и другие проблемы) я решил перейти к проклятиям.

Я столкнулся с проблемами с емкостью экрана, например, во время длинных диалогов.В CMD экран просто прокручивается автоматически - и это то, что я ищу.

Мой подход был следующим.У меня есть ряд сценариев, содержащих классы и функции, сгруппированные по функциональности (например, относящиеся к доске, игроку, неигровым персонажам, сценарию общих служебных функций и т. Д.).Все они также требуют доступа к некоторым общим переменным и объектам;Я группирую их в сценарии shared.py и подписываю остальные сценарии;часть этого скрипта, относящаяся к механизму отображения, выглядит следующим образом:

shared.py

import curses
sc  = curses.initscr()
scr = curses.newpad(1000,1000)
scr.scrollok

И для обновления я использую:

shared.scr.refresh(0, 0, 0, 0, shared.sc.getmaxyx()[0] - 1, shared.sc.getmaxyx()[1] - 1)

Но в тот момент, когда дисплей заполняется,я полагаю, что новое содержимое все еще сбрасывается в панель, но не отображается на дисплее.Я мог бы, вероятно, придумать способ смещения аргументов refresh () так, чтобы нижняя строка дисплея всегда совпадала с самой последней строкой, добавленной на пэд, но это все еще дает мне ценность только одного экрана.

Можно ли напечатать содержимое пэда в окно таким образом, чтобы старое содержимое было сохранено и доступно при прокрутке вверх?По сути, я хочу иметь возможность добавлять строки к своему дисплею, и по мере того, как он заполняется, я хочу, чтобы генерировалось больше области дисплея и чтобы старый контент, который больше не помещался внутри дисплея, перемещался через верхний край дисплея (но для того, чтобы он все еще был доступен при прокрутке).

...