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

2024-01-15 00:36

本文主要是介绍点击随机红点的简单游戏(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 = 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帧/秒。

 

这篇关于点击随机红点的简单游戏(pygame)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607043

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构