Python3+Tkinterでタイピングゲームを作ってみました。

 

https://github.com/dev001hajipro/typing-game-py

JavaScriptでタイピングソフトの基本部分を作ったので、Python+Tkinterに移植してみました。130行ぐらいで、タイマー、スコア表示、タイピングが実装できました。まだゲーム終了とリトライ機能、音声はありませんが、初心者には参考になると思います。またPython+Tkinter課題がいくつか見えてきました。

TkinterはUI更新はメインスレッドで行う

最初、タイマー機能を実現するために、ワーカースレッドを用意して、そのスレッドでUI更新をしようとしましたが、例外が発生しました。ワーカースレッドでは、データ更新を行い、Tk.after関数で定期的にUIリフレッシュをする機能を別途設けて対応しました。

Tkinterに音声再生はない

Pythonで音声再生をする場合は、PyAudioなどを使う方法がありますが面倒そうです。

Pythonではglobalに状態変数を持ち、それを関数で呼び出す場合コードが汚くなっていく。

Pythonはグローバル変数を関数のスコープで使う場合、globalキーワードを使います。とりあえずグローバル変数を使うと、コードが汚くなるのが分かりました。状態保持用のクラスを作成するなどをしたほうがよさそうです。

ゲームライブラリーを使ったほうが良い

ゲームエンジン、ライブラリーは、入力支援、音声再生、スプライト表示などが簡単に書けるので、PyGame、PySDL2、Godot3 Engineを検討したほうがよいと感じました。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA