This is a simple game where the player clicks on a randomly moving red dot to increase their score. Below is the breakdown of the code:
The random
module is used to generate random positions for the dot, and pgzrun
is used to run the game:
import random import pgzrun
The screen's dimensions are defined here, with both width and height set to 300 pixels:
WIDTH = 300 HEIGHT = 300
The dot is represented by a rectangle that starts at the center of the screen:
dot = Rect((WIDTH // 2, HEIGHT // 2), (20, 20))
Rect((WIDTH // 2, HEIGHT // 2), (20, 20))
: Creates a rectangle with a width and height of 20 pixels, positioned at the center of the screen.The score
variable tracks the player's score:
score = 0
The draw()
function clears the screen, draws the red dot, and displays the player's score:
def draw(): screen.clear() screen.draw.filled_rect(dot, "red") screen.draw.text(f"Score: {score}", (10, 10), color="white", fontsize=20)
screen.clear()
: Clears the screen before drawing new elements.screen.draw.filled_rect(dot, "red")
: Draws the dot as a red rectangle.screen.draw.text()
: Displays the current score at the top-left corner of the screen.The move_dot()
function moves the dot to a random position within the screen boundaries:
def move_dot(): dot.x = random.randint(0, WIDTH - dot.width) dot.y = random.randint(0, HEIGHT - dot.height)
random.randint(0, WIDTH - dot.width)
: Ensures the dot stays within the horizontal boundaries.random.randint(0, HEIGHT - dot.height)
: Ensures the dot stays within the vertical boundaries.The on_mouse_down(pos)
function checks if the dot is clicked and updates the score if it is:
def on_mouse_down(pos): global score if dot.collidepoint(pos): score += 1 move_dot()
dot.collidepoint(pos)
: Checks if the mouse click position overlaps with the dot's position.score += 1
: Increases the score by 1 for each successful click.move_dot()
: Moves the dot to a new random position after it's clicked.The dot moves to a new random position every second, using clock.schedule_interval()
:
clock.schedule_interval(move_dot, 1.0)
move_dot
: The function to be executed.1.0
: The interval in seconds between each execution.The game starts with the pgzrun.go()
function, which runs the game loop:
pgzrun.go()