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 に答える