我正在创建一个基于文本的游戏,可以选择为他们的角色选择一个类。目前,玩家输入他们的选项,输入数字或类的名称。它运作良好。
但是,我想让玩家使用箭头键导航菜单,然后使用“回车”键选择一个选项。为了明确他们将要选择哪个选项,我还希望突出显示所选选项的文本。如果你曾经玩过ASCII roguelike,你就会知道它的样子。
以下是我目前用于课程的代码:
double
谢谢!
答案 0 :(得分:2)
正如评论中已经提到的那样,你可以使用curses。这是一个小工作菜单,可以实现您想要的目标
import curses
classes = ["The sneaky thief", "The smarty wizard", "The proletariat"]
def character(stdscr):
attributes = {}
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
attributes['normal'] = curses.color_pair(1)
curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_WHITE)
attributes['highlighted'] = curses.color_pair(2)
c = 0 # last character read
option = 0 # the current option that is marked
while c != 10: # Enter in ascii
stdscr.erase()
stdscr.addstr("What is your class?\n", curses.A_UNDERLINE)
for i in range(len(classes)):
if i == option:
attr = attributes['highlighted']
else:
attr = attributes['normal']
stdscr.addstr("{0}. ".format(i + 1))
stdscr.addstr(classes[i] + '\n', attr)
c = stdscr.getch()
if c == curses.KEY_UP and option > 0:
option -= 1
elif c == curses.KEY_DOWN and option < len(classes) - 1:
option += 1
stdscr.addstr("You chose {0}".format(classes[option]))
stdscr.getch()
curses.wrapper(character)
最后一次调用getch
只是为了在程序终止之前看到结果