2017-02-21 5 views
2

Python 3.6でゲームをしたいのですが、問題があります。 (WASDのような)コロールを設定しようとすると、Pythonシェルは常にÿ(unicode:b '\ xff')を押していることを検出します。私はキーボードにÿを持っていません。私は書いた:print(getch())print(chr(ord(getch())))連続b ' xff'

  1. 私の問題を解決するにはどのようなものです:

    私は2つの質問がありますか?

  2. Pythonで作ったゲームでコントロールを設定する最も良い方法は何ですか?

ありがとうございます。

+1

'EOF'リターンコード' -1'(char型にしようとすると '0xFF')になる可能性があります。あなたがユニコードシーケンスとして解釈している入力の終わり?これは確かに制御信号であり、実際のキーボード入力ではありません。 Cursesを使用している場合は、こちらをご覧くださいhttp://stackoverflow.com/questions/4241366/getch-returns-1 – slezica

答えて

0

Spyderに含まれているIPythonコンソールを使用していたときも同様の問題がありました。

まず、cmdコンソールを使用して問題が解決するかどうかを確認してください。

次に、getch()は、キーを押すのを待つことなく、連続して読み取ります。あなたは、いくつかの特定の入力をキャプチャする必要がある場合は、使用する必要があります。

while True: 
    if msvcrt.kbhit(): 
     ch = msvcrt.getch() 
     print(ch) 

第三に、あなたがバイトを持って、あなたのコード内の数文字に対してチェックしたいかもしれないので、Windows用の私の提案ではなく、getwch()を使用することですgetch()

import msvcrt, sys, datetime 
while True: 
    if msvcrt.kbhit(): 
     ch = msvcrt.getwch() 
     if ch == 'q': 
      sys.exit() 
     else: 
      print (ch, " Pressed at : ", datetime.datetime.now().time())