Ascii艺术不断被取代

时间:2013-06-15 07:16:55

标签: python ascii

我想在Python中制作一个简单的游戏,你可以在其中找到'@'符号并且可以移动到 室。

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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移动@

答案 1 :(得分:0)

我从未使用诅咒(如Bakuriu所述),但是能够在不改变屏幕上任何其他内容的情况下更改屏幕上的角色将使这一切变得更加容易。

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

import os
os.system('clear')

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