Blog Pages

Memory Trainer App

pip install playsound


import tkinter as tk
import random
import time
from threading import Thread
from playsound import playsound

# Constants
PATTERN_LENGTH = 5
DELAY_SECONDS = 3

class MemoryTrainer:
    def __init__(self, root):
        self.root = root
        self.root.title("🧠 Memory Trainer")
        self.root.geometry("400x300")
        self.pattern = []

        self.label = tk.Label(root, text="Click Start to Begin", font=("Arial", 16))
        self.label.pack(pady=30)

        self.start_button = tk.Button(root, text="Start", command=self.start_game, font=("Arial", 14))
        self.start_button.pack()

        self.input_entry = tk.Entry(root, font=("Arial", 14))
        self.submit_button = tk.Button(root, text="Submit", command=self.check_answer, font=("Arial", 12))

        self.feedback = tk.Label(root, text="", font=("Arial", 14), fg="blue")
        self.feedback.pack(pady=10)

    def start_game(self):
        self.pattern = [random.randint(0, 9) for _ in range(PATTERN_LENGTH)]
        self.label.config(text=f"Memorize: {' '.join(map(str, self.pattern))}")
        self.feedback.config(text="")
        self.start_button.config(state=tk.DISABLED)
        self.root.after(DELAY_SECONDS * 1000, self.show_input)

        # Optional sound cue
        Thread(target=lambda: playsound("ding.mp3")).start()  # Replace with a valid sound path

    def show_input(self):
        self.label.config(text="Now enter the pattern:")
        self.input_entry.pack()
        self.submit_button.pack()

    def check_answer(self):
        user_input = self.input_entry.get().strip().split()
        try:
            user_pattern = list(map(int, user_input))
            if user_pattern == self.pattern:
                self.feedback.config(text="✅ Correct!", fg="green")
            else:
                self.feedback.config(text=f"❌ Wrong! Pattern was: {' '.join(map(str, self.pattern))}", fg="red")
        except ValueError:
            self.feedback.config(text="⚠️ Please enter valid numbers.", fg="orange")

        self.input_entry.delete(0, tk.END)
        self.start_button.config(state=tk.NORMAL)
        self.input_entry.pack_forget()
        self.submit_button.pack_forget()

if __name__ == "__main__":
    root = tk.Tk()
    app = MemoryTrainer(root)
    root.mainloop()

No comments:

Post a Comment