下面的代码让您可以使用箭头键将“。”放在屏幕上的小网格中。你在哪里探索过或在旁边。即使我在第一次getch之前进行了刷新(要获得按键笔画),但在屏幕移出起始位置之前,屏幕不会显示任何内容。不应该在刷新后马上显示getstr,然后getch会在那之后等待?我甚至尝试添加stdscr.refresh(),但这也没有帮助。如何在等待第一个键击之前立即刷新屏幕?Python ncurses:直到第一次按键时才显示屏幕,即使刷新是第一次
import curses
def start(stdscr):
curses.curs_set(0)
movement = curses.newpad(10, 10)
cur_x, cur_y = 5, 5
while True:
movement.addstr(cur_y, cur_x, '@')
for (x_off, y_off) in [(-1,0),(1,0),(0,-1),(0,1)]:
movement.addstr(cur_y + y_off, cur_x + x_off, '.')
movement.refresh(1, 1, 0, 0, 7, 7) #Nothing is displayed until after the first key-stroke
key_stroke = stdscr.getch()
move_attempt = False
if 0 < key_stroke < 256:
key_stroke = chr(key_stroke)
elif key_stroke == curses.KEY_UP and cur_y > 1:
cur_y -= 1
elif key_stroke == curses.KEY_DOWN and cur_y < 8:
cur_y += 1
elif key_stroke == curses.KEY_LEFT and cur_x > 1:
cur_x -= 1
elif key_stroke == curses.KEY_RIGHT and cur_x < 8:
cur_x += 1
else:
pass
if __name__ == '__main__':
curses.wrapper(start)
比我自己的回答更彻底,也帮助我理解它为什么会这样。谢谢! – Dan