pygame鼠标绘制

pygame鼠标绘制

  • Pygame
  • 鼠标绘制效果
  • 代码

Pygame

Pygame是一个开源的Python库,专为电子游戏开发而设计。它建立在SDL(Simple DirectMedia Layer)的基础上,允许开发者使用Python这种高级语言来实时开发电子游戏,而无需被低级语言(如机器语言和汇编语言)所束缚。Pygame广泛应用于教育、娱乐、模拟等领域,并且支持多个平台,包括Windows、MacOS和Linux。

鼠标绘制效果

在这里插入图片描述
在这里插入图片描述

代码

import pygame
import sys# 初始化pygame
pygame.init()# 设置窗口大小
win_size = (800, 600)
screen = pygame.display.set_mode(win_size)# 设置颜色(RGB)
WHITE = (255, 255, 255)  # 修正背景色为白色
RED = (255, 0, 0)# 变量来跟踪是否正在绘制
drawing = False
# 列表来存储线条的点
lines = []# 创建一个时钟对象来控制帧率
clock = pygame.time.Clock()# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.MOUSEBUTTONDOWN:if event.button == 1:  # 左键按下drawing = Truelines.append([(event.pos[0], event.pos[1])])  # 开始新线条elif event.type == pygame.MOUSEBUTTONUP:if event.button == 1:  # 左键释放drawing = Falseelif event.type == pygame.MOUSEMOTION:if drawing:mouse_pos = event.pos# 追加当前点到当前线条的列表中lines[-1].append((mouse_pos[0], mouse_pos[1]))# 填充背景颜色screen.fill(WHITE)# 绘制所有线条for line in lines:for i in range(1, len(line)):pygame.draw.line(screen, RED, line[i - 1], line[i], 5)# 更新显示pygame.display.flip()# 设置帧率clock.tick(60)# 退出pygame
pygame.quit()
sys.exit()

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

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

相关文章

LeetCode刷题笔记第168题:Excel表列名称

LeetCode刷题笔记第168题:Excel表列名称 题目: 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 想法: 类似十…

Spring Boot可以同时处理多少请求?

Spring Boot本身对并发请求的处理能力没有明确的限制。Spring Boot的并发处理能力通常受到以下因素影响: 服务器硬件:包括CPU核心数、内存大小等。JVM配置:堆内存、永久代或元空间大小等。Web服务器:Spring Boot 默认使用嵌入式的…

ES数据存储与查询基本原理

Elasticsearch(ES)简介 Elasticsearch(ES)是一个分布式、可扩展、近实时的搜索和分析引擎,它基于Lucene,设计用于云计算中,处理大规模文档检索和数据分析任务,常用于实现内部搜索引…

CMake:静态库链接其他动态库或静态库(九)

1、项目结构 对于下面这样一个项目 把calc模块做成静态或者动态库把sort模块做成静态库然后再sort模块中的*.cpp调用calc模块生成的库即可(这样就制作了一个静态库引用动态或者静态库)test模块用于测试sort模块中的内容 . ├── calc │ ├── ad…

Codeforces Round 943 (Div. 3) 题解 缺F和G2

A题&#xff1a; Maximize? 题目大意&#xff1a; 给你一个整数 x&#xff0c; 要求你找出任意一个 y &#xff0c;。使得最大。 思路一&#xff1a;暴力 数据范围小&#xff0c;直接暴力。 #include <bits/stdc.h> #define int long long #define endl \n using n…

MySQL —— 库的基本操作

一、数据库的增删查改 &#xff08;1&#xff09;创建 语句&#xff1a;create database db_name;&#xff08;db_name是自定义的数据库名字&#xff09; &#xff08;2&#xff09;删除 语句&#xff1a;drop database dp_name;&#xff08;dp_name是要被删除的数据库的名字…

【智能算法】冠豪猪优化算法(CPO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;M Abdel-Basset等人受到冠豪猪防御行为启发&#xff0c;提出了冠豪猪优化算法&#xff08;Crested Porcupine Optimizer, CPO&#xff09;。 2.算法原理 2.1算法思想 …

关于阿里云DataWorks的20道面试题

1. 请简要介绍阿里云DataWorks的基本概念和主要功能。 阿里云DataWorks是一个全链路的大数据开发治理平台&#xff0c;其主要功能包括数据集成、数据建模与开发、数据地图、数据质量和数据服务等。 DataWorks的基本概念围绕其作为一个大数据开发和治理的平台&#xff0c;它整…

【Cpp】类和对象#构造函数 析构函数

标题&#xff1a;【Cpp】类和对象#构造函数 析构函数 水墨不写bug &#xff08;图片来源于网络&#xff09; 正文开始&#xff1a; &#xff08;一&#xff09;构造函数 构造函数是特殊的成员函数&#xff0c;需要注意的是&#xff0c;构造函数虽然名称叫构造&#xff0c;但…

区块链 | IPFS:Merkle DAG(进阶版)

&#x1f98a;原文&#xff1a;Merkle DAGs: Structuring Data for the Distributed Web &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 Merkle DAG 当我们在计算机上表示图时&#xff0c;必须通过提供节点和边的具体表示来编码我们的数据…

常用SQL命令

应用经常需要处理用户的数据&#xff0c;并将用户的数据保存到指定位置&#xff0c;数据库是常用的数据存储工具&#xff0c;数据库是结构化信息或数据的有序集合&#xff0c;几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据&#xff0c;进行数据访问控制&…

你不知道的CSS函数:attr() 的深度探索

在Web开发的世界里&#xff0c;CSS不仅仅是给网页披上华丽外衣的工具&#xff0c;它还隐藏着一些鲜为人知的功能&#xff0c;让我们的设计更加灵活和动态。今天&#xff0c;我们就来深入探讨一个这样的秘密武器——attr() 函数&#xff0c;它允许你在CSS中直接引用HTML元素的属…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

C语言之位操作符:<<、>>、、|、^、~,以及原码反码补码和例题详解

目录 前言 一、原码、反码、补码 二、移位操作符 三、位操作符&#xff1a;&、|、^、~ 四、经典例题分析&#xff1a; 总结 前言 本文将详细介绍C语言中左移操作符<<&#xff0c;右移操作符>>&#xff0c;按位与&&#xff0c;按位或|&#xff0c;按位异或^…

在大模型时代,我们普通人应该怎么办

在大模型时代&#xff0c;我们普通人应该怎么办呢&#xff1f;以下是几点建议&#xff1a; 学习和适应新技能&#xff1a;随着科技的发展和大数据的普及&#xff0c;新技能的学习变得尤为重要。我们可以关注当前热门的技术领域&#xff0c;如人工智能、数据分析、云计算等&…

Docker-10 Docker Compose

一、前言 通过前面几篇文章的学习,我们可以通过Dockerfile文件让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,或者开发一个Web应用,除了Web服务容器本身,还需要数据库服务容器、缓存容器,甚至还包括负…

【Spring AI】09. ETL 管道

文章目录 ETL PipelineAPI 概述入门指南ETL 接口和实现DocumentReaderJsonReaderTextReaderPagePdfDocumentReaderParagraphPdfDocumentReaderTikaDocumentReader DocumentTransformerTextSplitterTokenTextSplitterContentFormatTransformerKeywordMetadataEnricherSummaryMet…

mySQL商城项目实战 (二)(续作)

11-40 DDL语句 CREATE TABLE carts (cartId int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,userId int(11) NOT NULL DEFAULT 0 COMMENT 用户ID,isCheck tinyint(4) NOT NULL DEFAULT 1 COMMENT 是否选中,goodsId int(11) NOT NULL DEFAULT 0 COMMENT 商品ID,goodsSpecId v…

【通信中间件】Fdbus HelloWorld实例

Fdbus实例教程 Fdbus简介 Fdbus 全称 Fast Distributed Bus&#xff08;高速分布式总线&#xff09;&#xff0c;提供IPCRPC功能。适用于多种OS&#xff1a; LinuxQNXAnroidOSWindow Fdbus本质是Socket&#xff0c;IPC基于Unix domain socket&#xff0c;RPC基于TCP。使用G…

MathType打开的窗口太多 MathType说打开窗口太多无法复制怎么解决

在数学文档编辑中&#xff0c;MathType作为一款常用的数学公式编辑工具&#xff0c;使用过程中&#xff0c;我们常常会遇到一些问题&#xff0c;比如MathType打开的窗口过多导致软件运行缓慢甚至崩溃&#xff0c;以及在复制过程中出现“打开窗口太多&#xff0c;无法复制”的提…