0

我想用 Python 制作一个简单的游戏,其中你是“@”符号并且可以在房间里移动。

level = """
  ┌-------------------------------------------┐
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                    @                      |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  |                                           |
  └-------------------------------------------┘
"""
print level
moving = raw_input(' ')
if moving == str('w'):
    level == """
 ┌-------------------------------------------┐
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                    @                      |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 |                                           |
 └-------------------------------------------┘
   """
    print level 

到目前为止,这是我的代码。我想让它在用户输入“w”时在终端中替换打印的第一个“级别”。这可能吗?如果是这样,我该怎么做?如果不是,我将如何(或者)这样做?[编辑] 当我输入“w”时,我希望它替换程序中打印的第一个“级别”。而不是打印出一个新的“级别”实例,抱歉解释得不够好

4

2 回答 2

4

curses模块提供了一种创建 TUI(终端用户界面)的方法。您可以在此处找到教程。

一个与您想要做的事情相关的小例子:

import curses
curses.initscr()
curses.noecho()    # don't echo the keys on the screen
curses.cbreak()    # don't wait enter for input

window = curses.newwin(10, 10, 0, 0)  # create a 10x10 window
window.box()       # Draw the box outside the window
cur_x = 1
cur_y = 1
while True:
    window.addch(cur_y, cur_x, '@')
    window.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'):
        # stop the program when Q is entered.
        break
curses.endwin()

将其保存在文件中,test_curses.py然后运行:

python test_curses.py

在终端中并使用 WASD 来移动@.

于 2013-06-15T07:39:04.883 回答
0

我从来没有使用过诅咒(正如 Bakuriu 所提到的),但是能够改变屏幕上的角色而不改变屏幕上的任何其他内容将使这一切变得更加容易。

作为一种解决方法,我建议您在实例之间清除屏幕:

import os
os.system('clear')

编辑: Curses 使用move(x,y)命令将光标定位在所需的任何位置,如果您不希望显示光标,可以使用curs_set(False). (http://docs.python.org/dev/howto/curses.html

于 2013-06-15T07:34:07.560 回答