私はテキストアドベンチャーを作成しています。 これに静的テキストを追加するにはどうすればよいですか。 私が意味しているのは、常にウィンドウの左側にあるテキストです。他のテキストがすべてスクロールダウンしていても。また、どうやってこのテキストを赤にすることができますか。
回答:
回答№1は1これは、静的テキストを赤で表示する例です(これは常に一番上に表示されたままです)。
import sys
import curses
curses.initscr()
if not curses.has_colors():
curses.endwin()
print "no colors"
sys.exit()
else:
curses.start_color()
curses.noecho() # don"t echo the keys on the screen
curses.cbreak() # don"t wait enter for input
curses.curs_set(0) # don"t show cursor.
RED_TEXT = 1
curses.init_pair(RED_TEXT, curses.COLOR_RED, curses.COLOR_BLACK)
window = curses.newwin(20, 20, 0, 0)
window.box()
staticwin = curses.newwin(5, 10, 1, 1)
staticwin.box()
staticwin.addstr(1, 1, "test", curses.color_pair(RED_TEXT))
cur_x = 10
cur_y = 10
while True:
window.addch(cur_y, cur_x, "@")
window.refresh()
staticwin.box()
staticwin.refresh()
inchar = window.getch()
window.addch(cur_y, cur_x, " ")
# W,A,S,D used to move around the @
if inchar == ord("w"):
cur_y -= 1
elif inchar == ord("a"):
cur_x -= 1
elif inchar == ord("d"):
cur_x += 1
elif inchar == ord("s"):
cur_y += 1
elif inchar == ord("q"):
break
curses.endwin()
結果のスクリーンショット:
一番上のウィンドウは refresh()
そうでなければ、下に行くべきウィンドウがそれらの上に描画されます。
静的テキストを変更したい場合は、次のようにします。
staticwin.clear() #clean the window
staticwin.addstr(1, 1, "insert-text-here", curses.color_pair(RED_TEXT))
staticwin.box() #re-draw the box
staticwin.refresh()
どこ 1, 1
から書き始めることを意味する 二番目 の性格 二番目 行(覚えている:座標はで始まる) 0
)これは、ウィンドウのボックスが最初の行と最初の列に描画されるために必要です。
回答№2の場合は0
別のウィンドウに配置して静的テキストを作成します。すべてのテキストに十分な大きさのウィンドウを作成してから、動的テキスト用に小さなウィンドウを作成します。様々なものを渡すことによってテキストは着色されています COLOR_*
text属性としての定数