点击随机红点的简单游戏(pygame)

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 = x
        self.y = y
        self.amount = amount
        self.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帧/秒。

点击随机红点的简单游戏(pygame)_第1张图片 

你可能感兴趣的:(pygame,游戏,python)