![](/img/trans.png)
[英]‘_curses.error: curses function returned NULL’ with windows-curses
[英]_curses.error: add_wch() returned an error
我有以下代碼渲染我的無賴類游戲的顯示。 它包括渲染地圖。
def render_all(self):
for y in range(self.height):
for x in range(self.width):
wall = self.map.lookup(x,y).blocked
if wall:
self.main.addch(y, x, "#")
else:
self.main.addch(y, x, ".")
for thing in self.things:
draw_thing(thing)
每次都會出錯。 我認為是因為它不在屏幕上,但是高度和寬度變量來自self.main.getmaxyx(),所以它不應該這樣做,對嗎? 我想念什么? 在Ubuntu 14.04中運行的Python 3.4.3應該很重要。
這是預期的行為。 Python使用ncurses,這樣做是因為其他實現也這樣做。
在addch
的手冊頁中:
addch
,waddch
,mvaddch
和mvwaddch
例程將字符ch
放入給定窗口的當前窗口位置,然后將其前進。 它們類似於stdio(3)中的putchar
。 如果預付款處於正確的邊距:
光標會自動換行到下一行的開頭。
在當前滾動區域的底部,如果啟用了
scrollok
,則滾動區域將向上滾動一行。如果未啟用
scrollok
則成功寫入右下角的字符。 但是, 由於無法換行而返回錯誤
Python的curses綁定具有scrollok
。 要添加字符而不滾動,您可以使用“ false”參數來調用它,例如,
self.main.scrollok(0)
如果您不想滾動,則可以使用try / catch塊,如下所示:
import curses
def main(win):
for y in range(curses.LINES):
for x in range(curses.COLS):
try:
win.addch(y, x, ord('.'))
except (curses.error):
pass
curses.napms(1)
win.refresh()
ch = win.getch()
curses.wrapper(main)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.