概要
PythonでGUIを使用して、反射神経を測定するゲームを作成します。このゲームでは、画面に表示される赤い丸と緑の丸をクリックして得点を競います。30秒間でどれだけ多くの丸をクリックできるかが勝負です。残り10秒になると小さな緑の丸が追加され、クリックすると高得点を獲得できます。
使用例
このゲームは、プログラミングの学習や反射神経のトレーニングに最適です。プログラミング初心者でも簡単にGUIアプリケーションを作成する方法を学ぶことができます。
必要なPythonライブラリとインストール方法
このゲームを作成するには、Pythonの標準ライブラリであるtkinter
を使用します。tkinter
はPythonに標準で含まれているため、追加のインストールは不要です。
使用手順
- Pythonがインストールされていることを確認します。インストールされていない場合は、Python公式サイトからダウンロードしてインストールしてください。
- 下記のプログラムコードをコピーし、メモ帳などのテキストエディタに貼り付けます。
- ファイルを保存し、ファイル名を
reaction_game.py
とします。 - コマンドプロンプトまたはターミナルを開き、保存したファイルがあるディレクトリに移動します。
python reaction_game.py
コマンドを実行してゲームを開始します。
注意点
- ゲーム中に表示される赤い丸をクリックすると2点、緑の丸をクリックすると5点が加算されます。
- クリックが外れた場合は-1点となります。
- ゲームが終了すると「Return to Title」ボタンが表示され、それをクリックするとタイトル画面に戻ります。
プログラム
下記のコードをメモ帳などに丸々コピーしてpythonファイル(reaction_game.py
)にしてください。
pythonコードをコピーするimport tkinter as tk
import random
class ReactionGame:
def __init__(self, root):
self.root = root
self.root.title("Reaction Time Game")
self.canvas = tk.Canvas(root, width=500, height=500, bg="white")
self.canvas.pack()
self.title_frame = tk.Frame(root)
self.title_frame.pack()
self.title_label = tk.Label(self.title_frame, text="Reaction Time Game", font=("Arial", 24))
self.title_label.pack(pady=20)
self.start_button = tk.Button(self.title_frame, text="Start", font=("Arial", 18), command=self.start_game)
self.start_button.pack(pady=20)
self.score_label = tk.Label(self.root, text="Score: 0", font=("Arial", 18))
self.score_label.pack(pady=10)
self.timer_label = tk.Label(self.root, text="Time left: 30", font=("Arial", 18))
self.timer_label.pack(pady=10)
self.return_button = tk.Button(self.root, text="Return to Title", font=("Arial", 18), command=self.return_to_title)
self.return_button.pack(pady=20)
self.return_button.pack_forget()
self.canvas.bind("<Button-1>", self.check_click)
self.score = 0
self.time_left = 30
self.target_coords = []
self.game_running = False
def start_game(self):
self.title_frame.pack_forget()
self.canvas.pack()
self.score = 0
self.time_left = 30
self.update_score()
self.update_timer()
self.game_running = True
self.next_target()
self.update_clock()
def update_clock(self):
if self.game_running:
self.time_left -= 1
self.update_timer()
if self.time_left > 0:
self.root.after(1000, self.update_clock)
else:
self.end_game()
def next_target(self):
if not self.game_running:
return
self.canvas.delete("all")
self.target_coords = []
if self.time_left <= 10:
x = random.randint(75, 425)
y = random.randint(75, 425)
self.target_coords.append((x, y, x + 25, y + 25, "green"))
self.canvas.create_oval(x, y, x + 25, y + 25, fill="green")
x = random.randint(50, 450)
y = random.randint(50, 450)
self.target_coords.append((x, y, x + 50, y + 50, "red"))
self.canvas.create_oval(x, y, x + 50, y + 50, fill="red")
self.root.after(1000, self.next_target)
def check_click(self, event):
if not self.game_running:
return
hit = False
for (x1, y1, x2, y2, color) in self.target_coords:
if x1 <= event.x <= x2 and y1 <= event.y <= y2:
hit = True
if color == "red":
self.score += 2
elif color == "green":
self.score += 5
break
if not hit:
self.score -= 1
self.update_score()
def update_score(self):
self.score_label.config(text=f"Score: {self.score}")
def update_timer(self):
self.timer_label.config(text=f"Time left: {self.time_left}")
def end_game(self):
self.game_running = False
self.canvas.delete("all")
self.score_label.config(text=f"Game Over! Final Score: {self.score}")
self.return_button.pack()
def return_to_title(self):
self.return_button.pack_forget()
self.canvas.pack_forget()
self.title_frame.pack()
if __name__ == "__main__":
root = tk.Tk()
game = ReactionGame(root)
root.mainloop()
あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。
click-gameくん
まとめ
PythonでGUIを使用した反射神経測定ゲームの作成方法を紹介しました。このゲームは、プログラミング初心者でも簡単に作成でき、楽しみながらプログラミングを学ぶことができます。ぜひ挑戦してみてください。