見出し画像

Pythonで超簡易的なタイピングゲーム作ってみた

先日、キーボードを新調した

結構配置が変わってタイピングが拙い状態。
練習としてタイピングゲームを遊んでみようと思った。

手を出したのは寿司打

ゲームとしてものすごく面白いのだが、日本語の文章が多く、
日本語入力より、プログラマーが良く使うような、英数字、記号入力の方を練習したかった。
(多分日本語入力でcとかvとかを使う機会は無いだろう)

求めるものがあるなら作ればいいじゃないと思い至ったので、タイピングゲームを作ってみることにした。

作ったもの

今回作るのは、タイピングゲームだが、そこまでゲームらしさは求めていない。
新しいキーボードに慣れるまでのちょっとした練習ができれば良い。
そのため、凝ったUIとかは無く、単にコンソール上で完結するようなアプリを作る。

まずは、問題を作る仕組みから。
今回はこんな感じで作ってみた

  1. 出題の元となる文章、記号を書いたファイルを用意しておく。

  2. ファイルから文章、記号を読み取り、ランダムに出力する。

まずは、素材ファイルの用意。
こんな感じで用意してみた

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として、
意味のない文字列を淡々と出すクラス
意味のある文字列を淡々と出すクラス
のそれぞれを実装して、二通りの遊び方をするとか、
入力完了までの時間を計測、記録して成長曲線を描かせるとか、
失敗の多いキーを何らかの方法で覚えさせるとか、
幅は広そう。


この記事が気に入ったらサポートをしてみませんか?