Skip to content

Commit 1f5b186

Browse files
authored
Merge pull request #74 from Mojirade18/add-python-math-rush
Add: Math Rush (Addition Challenge) in Python
2 parents 52622a6 + cc212dc commit 1f5b186

4 files changed

Lines changed: 120 additions & 1 deletion

File tree

INDEX.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,9 @@ By now we have 2 numbers (variables), you and computer
103103

104104
### 🎯 [Rock–Paper–Scissors](python/rock_paper_scissors/)
105105
- Language: Python
106+
107+
### 🎯 [Typing_test](./Python/typing_speed_game/)
108+
- Language: Python
109+
110+
### 🎯 [Math Rush (Addition Challenge)](./Python/math_rush/)
111+
- Language: Python

Python/math_rush/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Math Rush (Addition Challenge GUI)
2+
3+
**Language:** Python
4+
**Run:** `python3 math_rush.py`
5+
6+
## 🎮 Description
7+
Math Rush is a fun and interactive GUI-based math game where players solve random addition problems under time pressure.
8+
You have **10 seconds** to answer each question correctly — how fast can your brain calculate?
9+
10+
## 🕹️ Controls
11+
- Type the correct answer in the box and press **Enter**.
12+
- Each question has a 10-second countdown.
13+
- Game ends when you’re too slow or answer incorrectly.
14+
15+
## 📦 Requirements
16+
- Python 3.8+
17+
- No external libraries (uses Tkinter, included with Python).
18+
19+
## 🚀 How to Play
20+
1. Run the script:
21+
`python3 math_rush.py`
22+
2. Click **Start Game**.
23+
3. Add the two numbers before time runs out.
24+
4. Try to reach the highest score!

Python/math_rush/main.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import tkinter as tk
2+
import random
3+
import threading
4+
import time
5+
6+
class MathRush:
7+
def __init__(self, root):
8+
self.root = root
9+
self.root.title("🧮 Math Rush - Addition Challenge")
10+
self.root.geometry("400x350")
11+
self.root.config(bg="#f8f8f8")
12+
13+
self.score = 0
14+
self.time_left = 10
15+
self.current_answer = 0
16+
17+
self.header = tk.Label(root, text="🧮 Math Rush!", font=("Helvetica", 20, "bold"), bg="#f8f8f8", fg="#333")
18+
self.header.pack(pady=10)
19+
20+
self.timer_label = tk.Label(root, text="Time left: 10s", font=("Helvetica", 14), fg="#FF5733", bg="#f8f8f8")
21+
self.timer_label.pack()
22+
23+
self.score_label = tk.Label(root, text="Score: 0", font=("Helvetica", 14), fg="#1E8449", bg="#f8f8f8")
24+
self.score_label.pack()
25+
26+
self.question_label = tk.Label(root, text="", font=("Helvetica", 22, "bold"), bg="#f8f8f8")
27+
self.question_label.pack(pady=20)
28+
29+
self.answer_entry = tk.Entry(root, font=("Helvetica", 16), justify="center")
30+
self.answer_entry.pack(pady=5)
31+
self.answer_entry.bind("<Return>", self.check_answer)
32+
33+
self.feedback_label = tk.Label(root, text="", font=("Helvetica", 14, "bold"), bg="#f8f8f8")
34+
self.feedback_label.pack(pady=10)
35+
36+
self.start_button = tk.Button(root, text="Start Game", font=("Helvetica", 14, "bold"), bg="#3498db", fg="white", command=self.start_game)
37+
self.start_button.pack(pady=10)
38+
39+
def start_game(self):
40+
self.score = 0
41+
self.time_left = 10
42+
self.score_label.config(text=f"Score: {self.score}")
43+
self.start_button.config(state="disabled")
44+
self.feedback_label.config(text="")
45+
self.next_question()
46+
self.update_timer()
47+
48+
def next_question(self):
49+
a = random.randint(1, 50)
50+
b = random.randint(1, 50)
51+
self.current_answer = a + b
52+
self.question_label.config(text=f"{a} + {b} = ?")
53+
self.answer_entry.delete(0, tk.END)
54+
self.time_left = 10
55+
self.timer_label.config(text=f"Time left: {self.time_left}s", fg="#FF5733")
56+
57+
def update_timer(self):
58+
if self.time_left > 0:
59+
self.time_left -= 1
60+
self.timer_label.config(text=f"Time left: {self.time_left}s")
61+
self.root.after(1000, self.update_timer)
62+
else:
63+
self.feedback_label.config(text="⏰ Time's up!", fg="orange")
64+
self.end_game()
65+
66+
def check_answer(self, event):
67+
user_input = self.answer_entry.get().strip()
68+
if not user_input.isdigit():
69+
self.feedback_label.config(text="Enter a valid number!", fg="red")
70+
return
71+
if int(user_input) == self.current_answer:
72+
self.score += 1
73+
self.score_label.config(text=f"Score: {self.score}")
74+
self.feedback_label.config(text="✅ Correct!", fg="green")
75+
self.next_question()
76+
else:
77+
self.feedback_label.config(text=f"❌ Wrong! Answer was {self.current_answer}", fg="red")
78+
self.end_game()
79+
80+
def end_game(self):
81+
self.question_label.config(text="Game Over!")
82+
self.start_button.config(state="normal")
83+
self.feedback_label.config(text=f"Final Score: {self.score}", fg="#333")
84+
85+
if __name__ == "__main__":
86+
root = tk.Tk()
87+
game = MathRush(root)
88+
root.mainloop()

update_index.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python3
22

3-
import os re
3+
import os
4+
import re
45
from pathlib import Path
56

67
def get_game_description(game_path):

0 commit comments

Comments
 (0)