Introduction:
Have you ever played a game that challenges how quickly you can identify colors, not words? Welcome to the Color Blindness Check Game, a fast-paced, brain-boosting mini-project made with Python’s Tkinter library.
This game is not just fun — it also challenges your brain to distinguish color names from the color of the text itself. It's a classic example of the Stroop Effect, where your brain's reaction time is tested by conflicting information.
This post will walk you through everything: setting up the environment, creating the game, understanding each part of the code, and finally — a complete copy-paste ready solution.
Project Overview:
- Objective: Build a game that displays color names in random font colors, and the player must type the color of the text, not the word shown.
- Skills Covered: Tkinter GUI design, input handling, countdown timers, randomization, and logic building.
-
Tools Needed: Python 3.x and the built-in
tkinter
andrandom
libraries.
Step-by-Step Guide
Step 1: Setting Up the Environment
Ensure Python is installed on your device (Python 3.x recommended). Tkinter usually comes pre-installed.
To check:
import tkinter
If no error appears, you're good to go!
Step 2: Designing the Game Mechanics
Here’s what we need:
- A timer that counts down from 30 seconds.
- A label that shows a color name in a different colored text.
- An entry box where the user types the color of the text.
- A score counter.
- Key binding (pressing Enter starts or continues the game).
We’ll use Python’s random
module to shuffle colors and pick new combinations.
Step 3: Explaining the Code (Before Full Code)
1. Import Required Libraries
from tkinter import *
import random
Tkinter for GUI, and random to shuffle the color choices.
2. Initialize Score and Time
score = 0
timeleft = 30
3. start_game()
— Begins the Game on Enter Key
This function starts the countdown and calls next_color()
to show the first color challenge.
4. next_color()
— Main Game Logic
- Checks user input.
- Updates the score.
- Randomizes the color label for the next challenge.
5. countdown()
— Timer Function
Updates the timer every second and stops when time runs out.
6. Tkinter Layout
We add:
- A main title label
- Instructions
- Score display
- Timer display
- Entry box
- Bind the
(Enter key) to start the game
Full Code
Here’s the complete, clean code that you can copy and run:
from tkinter import *
import random
# List of possible colors
colors = ['Red', 'Blue', 'Green', 'Pink', 'Orange', 'Purple', 'Yellow', 'Brown', 'Black']
# Score and timer
score = 0
timeleft = 30
# Function to start the game
def start_game(event):
if timeleft == 30:
countdown()
next_color()
# Function to display the next color
def next_color():
global score
global timeleft
if timeleft > 0:
entry_box.focus_set()
# Check if the entered text is correct
if entry_box.get().lower() == colors[1].lower():
score += 1
# Clear the entry box
entry_box.delete(0, END)
# Shuffle the colors and update the label
random.shuffle(colors)
color_label.config(bg=str(colors[1]), text=" ")
# Update the score display
score_label.config(text="Score: " + str(score))
# Countdown timer function
def countdown():
global timeleft
if timeleft > 0:
timeleft -= 1
time_label.config(text="Time left: " + str(timeleft))
time_label.after(1000, countdown)
# Create the main window
root = Tk()
root.title("Color Blindness Check Game")
root.geometry("600x600")
# Instruction label
instructions = Label(root, text="Type the color of the words, not the word itself!", font=('Helvetica', 12))
instructions.pack(pady=10)
# Score label
score_label = Label(root, text="Score: 0", font=('Helvetica', 12))
score_label.pack()
# Time left label
time_label = Label(root, text="Time left: 30", font=('Helvetica', 12))
time_label.pack()
# Label to display colors
color_label = Label(root, text=" ", font=('Helvetica', 36), bg="black")
color_label.pack(pady=20)
# Entry box for user input
entry_box = Entry(root, font=('Helvetica', 14), width=25)
entry_box.pack()
# Bind Enter key to start the game
root.bind('', start_game)
# Set focus to the entry box
entry_box.focus_set()
# Run the GUI
root.mainloop()
Conclusion
This simple yet powerful game is perfect for:
- Practicing
Tkinter
GUIs. - Learning to manage time-based events.
- Challenging your brain and reaction time.