import pygame
import sys
import random# 初始化 Pygame
pygame.init()# 设置窗口大小
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Click the Red Dot")# 定义颜色
black = (0, 0, 0)
red = (255, 0, 0)# 红点类
class RedDot:def __init__(self, x, y, amount):self.x = xself.y = yself.amount = amountself.clicked = False# 生成随机红点
def generate_red_dot():x = random.randint(50, width - 50)y = random.randint(50, height - 50)amount = random.randint(1, 100)return RedDot(x, y, amount)# 主循环
red_dots = []
clock = pygame.time.Clock()while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.MOUSEBUTTONDOWN:# 检查鼠标点击位置是否在红点范围内for red_dot in red_dots:if red_dot.x - 25 <= event.pos[0] <= red_dot.x + 25 and \red_dot.y - 25 <= event.pos[1] <= red_dot.y + 25:# 标记红点被点击red_dot.clicked = True# 生成新的红点if random.random() < 0.01:red_dots.append(generate_red_dot())# 绘制红点screen.fill(black)for red_dot in red_dots:if not red_dot.clicked:pygame.draw.circle(screen, red, (red_dot.x, red_dot.y), 25)# 移除已点击的红点red_dots = [red_dot for red_dot in red_dots if not red_dot.clicked]pygame.display.flip()clock.tick(60)
对上述代码的总结和描述:
1.Pygame 初始化:
pygame.init() 初始化 Pygame 库。
2.窗口设置:
使用 pygame.display.set_mode() 创建一个窗口,大小为800x600像素。
使用 pygame.display.set_caption() 设置窗口标题为 "Click the Red Dot"。
3.颜色定义:
定义了两种颜色,black(黑色)和 red(红色)。
4.RedDot 类:
定义了一个 RedDot 类,表示屏幕上的红点。
具有属性:x 和 y 表示红点的位置,amount 表示红点的数量,clicked 表示红点是否被点击。
5.生成随机红点函数:
generate_red_dot() 函数生成一个具有随机位置和数量的 RedDot 对象。
6.主循环:
进入一个无限循环,处理事件、更新游戏状态并绘制屏幕。
7.事件处理:
处理 pygame.QUIT 事件,以便在窗口关闭时退出游戏。
处理 pygame.MOUSEBUTTONDOWN 事件,检查鼠标点击位置是否在红点范围内。
8.红点生成:
使用 random.random() 控制生成新红点的频率,当随机数小于0.01时,生成一个新的红点,并将其添加到 red_dots 列表中。
9.绘制屏幕:
使用 screen.fill(black) 填充屏幕为黑色。
遍历 red_dots 列表,绘制未被点击的红点。
10.移除已点击的红点:
通过列表推导式将已经被点击的红点从 red_dots 列表中移除。
11.刷新屏幕和控制帧率:
使用 pygame.display.flip() 更新屏幕。
使用 clock.tick(60) 控制游戏循环的帧率为60帧/秒。