LoginSignup
4

More than 5 years have passed since last update.

Python pygameのキー入力が上手くいかなかった場合の処理。

Last updated at Posted at 2017-09-11

環境

  1. Mac OS X Yosemite ver.10.10.5
  2. Python 3.6.1 |Anaconda 4.4.0 (x86_64)を使用

 参考書籍

「ゲームを作りながら楽しく学べるPythonプログラミング」
http://nextpublishing.jp/book/8501.html
こちらの本を先日購入しましたが、キー入力がなぜかターミナル上やエディターに実行され、肝心のゲームが一切動かないという事態が発生。

解決事例

調べてみるとpyenvをアンインストールし公式インストーラーからpython3をインストールし直すと正常に稼働するそうです。
またpygameのバージョンを変えることで解決した事例もあるようです。https://stackoverflow.com/questions/2718897/mac-os-x-pygame-input-goes-to-terminal-instead-of-python

解決

筆者の場合、Anacondaを使っているからなのか、pygameのバージョンを変えても上手くいきませんでした。
また同時に別作業でPython3を使っているためanacondaも使いたい、、、、
なのでまずpyenvをインストール。(pyenvはpythonのバージョンを簡単に切り替えることができるツールです。)
pyenvのインストールの仕方は下記サイトを参考にしました。
pyenvとvirtualenvで環境構築

そのあとpyenvを使い使用できるバージョンを確認。
$pyenv install --list
2.7.11
2.7.12
2.7.13   ← こいつらです
3.0.1
3.1
3.1.1

ここでたくさんのリストが表示されるので、上記の部分のpython2をインストールします。

$ pyenv install 2.7.13
と入力し実行。
インストールができたかは$pyenv versionsと打ち込めば確認できます。

このあとpygameを使ってゲームを製作しているディレクトリに移動し$pyenv local 2.7.13と入力、実行。
この時$pyenv global -.-.-.と打てば全体にpython2を適用できますが、いまさらpython2は必要ないので対象のディレクトリにのみ適用。

この時、localにpython2を適用したにもかかわらず、なぜかpython2が反映されず Python 3.6.1 |Anaconda 4.4.0 のままでしたが、一度再起動したら筆者の場合は解決しました。
もしそれでも直らない方は下記を参考されると良いかもです。
pyenvでPythonがSystemバージョンから切り替わらない時の対処

以上の処理で、筆者の場合はキー入力が可能になりました。

追記

ちなみにPython2の環境で運用すると、大抵の機能は問題なく動作しますが、
map, reduce, filterといった関数ははlist()などで囲む必要はありませんので、
この部分を削除すれば問題なく稼働します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4