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

news2025/2/22 17:13:18
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帧/秒。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1384440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XCTF:hello_pwn[WriteUP]

使用checksec查看ELF文件信息 checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点&#xff1a; Arch&#xff1a;64bit的文件&#xff0c;后面写exp的重点 Stack&#xff1a;No canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编 双击左侧的函数栏…

推荐github热榜项目_crewAI

1 项目地址 https://github.com/joaomdmoura/crewAI 2 功能 通过设置多个智能体&#xff0c;协同解决问题&#xff0c;以处理复杂任务&#xff1b;这种方法的实现方式是将一个任务的输出作为另一个任务的输入。它的优势在于小而有效&#xff0c;原理直观易懂&#xff0c;而且…

window中安装Apache http server(httpd-2.4.58-win64-VS17)

windows中安装Apache http server(httpd-2.4.58-win64-VS17) 1、下载windows版本的的httpd, https://httpd.apache.org/docs/current/platform/windows.html#down 这里选择的是Apache Lounge编译的版本 https://www.apachelounge.com/download/ 2、解压到指定目录&#xff0c;这…

AI出题,做不完,根本做不完

前几天学到了一种针对大模型进行提示词编程的方法&#xff0c;效果比较炸裂&#xff0c;特别分享给大家。 因为有个小朋友正在学习加减法&#xff0c;所以本文的大部分例子都是用来生成加减法练习题。 角色扮演 这是GPT刚刚出现时&#xff0c;我学到的一种提示词编写方法&am…

F-score 和 Dice Loss 原理及代码

文章目录 1. F-score1. 1 原理1. 2 代码2. Dice Loss2.1 原理2.2 代码 通过看开源图像语义分割库的源码&#xff0c;发现它对 Dice Loss 的实现方式&#xff0c;是直接调用 F-score 函数&#xff0c;换言之&#xff0c;Dice Loss 是 F-score的特殊情况。于是就研究了一下这背后…

网站漏洞扫描 awvs 23.11下载 Acunetix Premium build 23.11 for Linux 完美版

Acunetix Premium build 23.11 for Linux 完美版 更新日志&#xff1a; 网站漏洞扫描 awvs 23.11下载 新功能 Java IAST 传感器已更新为支持 Java 17 并删除了对 AspectJWeaver 的要求对管理适用于 Docker 和 Linux 的 Acunetix On-Premises 服务的机制进行了更改&#xff0…

前端js写数据结构与算法

1、什么是数据结构与算法 数据结构&#xff1a;是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。 算法&#xff1a;解决问题的思路。 2、时间复杂度 1.是什么? 执行当前算法所“花费的时间” 2.干什么? 在写代码的过程中&#xf…

C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用

SQL sugar 中控制器直接判断数据是否存在 首先确保你的Service层继承的表名 控制器中使用IsAny进行根据条件判断数据是否存在

算法通关村第十五关—继续研究超大规模数据场景的问题(黄金)

继续研究超大规模数据场景的问题 一、对20GB文件进行排序 题目要求&#xff1a;假设你有一个20GB的文件&#xff0c;每行一个字符串&#xff0c;请说明如何对这个文件进行排序&#xff1f;  分析&#xff1a;这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到…

墙地砖外形检测的技术方案-图像获取

硬件系统 墙地砖外形检测硬件系统主要由工业相机、光源、瓷砖位置检测电路和上位机组成&#xff0c;其结构如图所示。为了提高系统检测精度和稳定性&#xff0c;系统采用的是较高精度的高速工业相机用于抓取墙地砖表面轮廓图像&#xff0c;图像数据通过USB接口向上位机传送&am…

Maven《一》-- 一文带你快速了解Maven

目录 &#x1f436;1.1 为什么使用Maven 1. Mavan是一个依赖管理工具 ①jar包的规模 ②jar包的来源问题 ③jar包的导入问题 ④jar包之间的依赖 2. Mavan是一个构建工具 ①你没有注意过的构建 ②脱离IDE环境仍需构建 3. 结论 &#x1f436;1.2 什么是Maven &#x…

系列四、Spring Security中的认证 授权(前后端不分离)

一、Spring Security中的认证 & 授权&#xff08;前后端不分离&#xff09; 1.1、MyWebSecurityConfigurerAdapter /*** Author : 一叶浮萍归大海* Date: 2024/1/11 21:50* Description:*/ Configuration public class MyWebSecurityConfigurerAdapter extends WebSecuri…

ZZULIOJ 1110: 最近共同祖先(函数专题)

题目描述 如上图所示&#xff0c;由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结 点&#xff08;编号是1 的结点&#xff09;都有一条唯一的路径&#xff0c;比如从10 到根结点的路径是(10, 5, 2, 1)&#xff0c; 从4 到根结点的路径是(4, 2, 1)&#xff0…

x-cmd pkg | qrencode - 二维码生成工具

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 qrencode 是一个用于生成二维码的命令行工具。它可以将文本、URL、电话号码等信息转换为二维码图像。生成的二维码图像可以保存为图片文件&#xff0c;方便在电子文档、网页、移动应用等各种场景中使用。 它支持的二维…

python爬虫小练习——爬取豆瓣电影top250

爬取豆瓣电影top250 需求分析 将爬取的数据导入到表格中&#xff0c;方便人为查看。 实现方法 三大功能 1&#xff0c;下载所有网页内容。 2&#xff0c;处理网页中的内容提取自己想要的数据 3&#xff0c;导入到表格中 分析网站结构需要提取的内容 代码 import requests…

Random的使用

作用&#xff1a;生成伪随机数 1.导包&#xff1a;import java.util.Random 2.得到随机数对象&#xff1a;Random r new Random(); 3.调用随机数的功能获取随机数&#xff1a; 这里随机生成一个0-9的整数&#xff1a; int number r.nextInt(10); 实现指定区间的随机数&a…

C语言中关于指针的理解及用法

关于指针意思的参考&#xff1a;https://baike.baidu.com/item/%e6%8c%87%e9%92%88/2878304 指针 指针变量 地址 野指针 野指针就是指针指向的位置是不可知的&#xff08;随机的&#xff0c;不正确的&#xff0c;没有明确限制的&#xff09; 以下是导致野指针的原因 1.指针…

利益兑现期越短,积极性越高

在2023年一次部门项目提成时间节点的调整&#xff0c;引发了相关的销售部门 &#xff0c;项目集成部门&#xff0c;软件开发部门截然不同的工作积极性。 公司案例 公司做项目的时候&#xff0c;采用的是相关部门都可以在项目获取提成 &#xff0c;之前的提成方式为销售部门为…

maven镜像源设置aliyun提升下载速度

一、打开pom.xml project下在添加 <repositories><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository><repository><id>central2&l…

【Arduino】编程语言:定时函数、数学函数、字符函数(功能、语法格式、参数说明、返回值) | 软件开发环境:安装步骤介绍(EXE安装版、ZIP安装版)

你的负担将变成礼物,你受的苦将照亮你的路。———泰戈尔 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区…