我正在写一个python curses游戏(https://github.com/pankshok/xoinvader).我发现了一个问题:在终端模拟器中它工作正常,但在tty屏幕闪烁.我试图使用curses.flash(),但它变得更糟.
例如,屏幕字段:
self.screen = curses.newwin(80, 24, 0, 0)
Run Code Online (Sandbox Code Playgroud)
主循环:
def loop(self):
while True:
self.events()
self.update()
self.render()
Run Code Online (Sandbox Code Playgroud)
渲染:(https://github.com/pankshok/xoinvader/blob/master/xoi.py#L175)
self.screen.clear()
#draw some characters
self.screen.refresh()
time.sleep(0.03)
Run Code Online (Sandbox Code Playgroud)
睡眠功能的恒定时间是暂时的,直到我写入60个渲染调用控制器.
如何正确实现渲染方法?
保罗先生,谢谢.
Ros*_*dge 15
请勿打电话clear
清除屏幕,erase
而是使用.使用clear
设置一个标志,这样当你调用refresh
它做的第一件事就是清除终端的屏幕.这是导致终端屏幕显示闪烁的原因.用户看到旧屏幕,然后是完全空白的屏幕,然后是新屏幕.如果您使用erase
它,它将改为将旧屏幕修改为新屏幕.
您可能仍会在慢速终端上看到一些奇怪的闪烁或其他伪影.尝试调用screen.idcok(False)
并screen.idlok(False)
阻止curses使用插入和删除操作来更新屏幕.
归档时间: |
|
查看次数: |
2487 次 |
最近记录: |