Pythonで超簡易的なタイピングゲーム作ってみた
先日、キーボードを新調した
結構配置が変わってタイピングが拙い状態。
練習としてタイピングゲームを遊んでみようと思った。
手を出したのは寿司打
ゲームとしてものすごく面白いのだが、日本語の文章が多く、
日本語入力より、プログラマーが良く使うような、英数字、記号入力の方を練習したかった。
(多分日本語入力でcとかvとかを使う機会は無いだろう)
求めるものがあるなら作ればいいじゃないと思い至ったので、タイピングゲームを作ってみることにした。
作ったもの
今回作るのは、タイピングゲームだが、そこまでゲームらしさは求めていない。
新しいキーボードに慣れるまでのちょっとした練習ができれば良い。
そのため、凝ったUIとかは無く、単にコンソール上で完結するようなアプリを作る。
まずは、問題を作る仕組みから。
今回はこんな感じで作ってみた
出題の元となる文章、記号を書いたファイルを用意しておく。
ファイルから文章、記号を読み取り、ランダムに出力する。
まずは、素材ファイルの用意。
こんな感じで用意してみた
1234567890
!@#$%^&*()
qwertyuiop
asdfghjkl
zxcvbnm
`~-_=+'";:/?.>,<[]{}|\
そして、これを読み取り、ランダムに出題するクラスをこんな感じで作った
class Question:
def __init__(self) -> None:
self.get_material()
def put_question(self) -> str:
pick_num = random.randint(5, 10)
pick = random.choices(self.material, k=pick_num)
return "".join(pick)
def get_material(self) -> None:
with open('question_material.txt', encoding='utf-8') as file:
read_data = file.read()
self.material = read_data.replace("\n", "")
最後に、問題を表示し、ユーザー入力を受け取るメインのプログラムをこんな感じで作った
from question import Question
if __name__ == "__main__":
question = Question()
while (True):
answer = question.put_question()
print(answer)
user_input = input()
if answer == user_input:
print("Success!!\n")
else:
print("Failed...\n")
これで終了。
遊ぶときはこんな感じで遊べる
1行目が出題。2行目がユーザー入力。3行目が結果。
これを延々と繰り返す。
たったこれだけだが、いい練習になる。
キーを満遍なく練習できる。
何か手を加えるとしたら、
QuestionクラスをInterfaceとして、
意味のない文字列を淡々と出すクラス
意味のある文字列を淡々と出すクラス
のそれぞれを実装して、二通りの遊び方をするとか、
入力完了までの時間を計測、記録して成長曲線を描かせるとか、
失敗の多いキーを何らかの方法で覚えさせるとか、
幅は広そう。