使用pygame绘制图形

参考链接:https://www.geeksforgeeks.org/pygame-tutorial/?ref=lbp

在窗口中绘制单个图形

import pygame
from pygame.locals import *
import sys
pygame.init()window = pygame.display.set_mode((600,600))
window.fill((255,255,255))# pygame.draw.rect(window, (0,0,255), [100,100,400,100],0)
# pygame.draw.circle(window, (0, 0, 255),[300,300], 170, 0)
# pygame.draw.polygon(window, (255,0,0), [[300,300],[100,400],[100,300]])
pygame.draw.line(window, (0, 0, 0), [100, 300], [500, 300], 5)
pygame.display.update()while True:for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()
  1. pygame.draw.rect()

    这个函数用于在屏幕上绘制一个矩形。它的参数如下:

    • Surface:要在其上绘制矩形的窗口或屏幕对象。
    • color:矩形的颜色。这是一个RGB值,带有三个组件(每个范围从0到255)的元组。例如,(255, 0, 0)为红色。
    • Rect:矩形的位置和尺寸,格式为[x坐标, y坐标, 矩形宽度, 矩形高度]。
    • width(可选):矩形的厚度。如果值为0(默认值)或省略,则内部填充为颜色。
  2. pygame.draw.circle()

    这是一个用于在屏幕上绘制一个圆形的函数。它的参数为:

    • Surface:要在其上绘制圆形的窗口或屏幕对象。
    • color:同上,圆形的颜色。
    • pos:圆心的位置,格式为[x坐标, y坐标]。
    • radius:圆的半径。
    • width(可选):与上面的相同,圆的厚度。
  3. pygame.draw.polygon()

    这个函数用于在屏幕上绘制一个多边形。参数为:

    • Surface:要在其上绘制多边形的窗口或屏幕对象。
    • color:多边形的颜色。
    • pointlist:多边形顶点的位置列表,格式为[[x1, y1], [x2, y2], …]。
    • width(可选):多边形的厚度。
  4. pygame.draw.line()

    这个函数用于在屏幕上绘制一条线。该函数的参数如下:

    • Surface:要在其上绘制线条的窗口或屏幕对象。
    • color:线条的颜色。这是一个RGB值,带有三个组件(每个范围从0到255)的元组。例如,(0, 0, 0)为黑色。
    • start_pos:线条起点的位置,为一个坐标列表,即 [x坐标, y坐标]。
    • end_pos:线条终点的位置,格式与 start_pos 相同。
    • width (可选):线条的宽度。默认值为1。

绘制多个图形

import pygame
from pygame.locals import *
pygame.init()window = pygame.display.set_mode((600,600))
window.fill((255,255,255))pygame.draw.rect(window, (0,0,255),[50,200,500,200])
pygame.draw.circle(window, (0,255,0),[300,300],100)pygame.display.update()running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = False
pygame.quit()

首先,导入了 pygame 模块,并初始化了 pygame

然后,创建了一个 600x600 大小的窗口,并填充了白色背景。

在窗口上绘制了一个蓝色的矩形,其左上角坐标是(50,200),长是500像素,宽是200像素。

接着,在窗口上绘制了一个绿色的圆形,圆心位于(300,300),半径为100像素。

最后,更新了显示,并在用户关闭窗口之前保持了一个运行循环。
在这里插入图片描述

import pygame  # 导入pygame模块, 这是一个用于开发视频游戏的Python库
from pygame.locals import *  # 导入pygame.locals 模块中的所有内容,该模块包含了很多常用的常量和函数pygame.init()  # 初始化pygame模块window = pygame.display.set_mode((600,600))  # 创建一个600 x 600像素的窗口 
window.fill((255,255,255))  # 为这个窗口填充白色 (RGB: 255,255,255)# 创建含有五个矩形的列表
rect_list = [pygame.Rect(50,100,500,200), pygame.Rect(70,120,460,160),   pygame.Rect(90,140,420,120),   pygame.Rect(110,160,380,80),pygame.Rect(130,180,340,40)    
]# 创建含有五种不同颜色的列表
color_list = [(0, 0, 0),(255, 255, 255,),(0, 0, 255),(0, 255, 0),(255, 0, 0)
]color_var = 0  # 初始化颜色索引变量# 遍历矩形列表并为每个矩形绘制对应的颜色
for rectangle in rect_list :pygame.draw.rect(window, color_list[color_var], rectangle)  # 在window上绘制一个指定颜色和大小和位置的矩形color_var += 1  # 颜色索引变量+1pygame.display.update()  # 更新显示的内容使绘制的矩形可见# 主游戏循环
running = True  
while running:for event in pygame.event.get():  # 为窗口处理事件if event.type == pygame.QUIT :  # 如果事件类型是QUIT(通常表示关闭窗口事件)running = False  # 退出主循环pygame.quit()  # 关闭pygame窗口

在这里插入图片描述

使用函数

import pygame  # 导入pygame库,这是一个用于2D游戏开发的库
from pygame.locals import *  # 从pygame模块中导入常用的函数和常量def drawingfunction(x, y, width, height):  # 声明一个名为drawingfunction的函数,接受四个参数:x,y坐标和矩形宽度和高度pygame.draw.rect(window, (0, 0, 255), [x, y, width, height])  # 在给定位置和大小上画一个蓝色矩形circle_x = width / 2 + x  # 计算圆心x坐标circle_y = height / 2 + y  # 计算圆心y坐标# 判断宽度和高度哪个较小,并将其一半作为半径值if height < width:radius = height / 2else:radius = width / 2pygame.draw.circle(window, (0, 255, 0), [circle_x, circle_y], radius)  # 画一个绿色的圆形pygame.init()  # 初始化所有导入的pygame模块window = pygame.display.set_mode((600, 600))  # 创建一个新的窗口
window.fill((255, 255, 255))  # 使用白色填充窗口drawingfunction(50, 200, 500, 200)  # 调用我们前面定义的函数,画一个矩形和圆形pygame.display.update()  # 更新整个窗口running = True  # 控制游戏循环的开关
while running:  # 主游戏循环,当运行开关为真时,持续运行for event in pygame.event.get():  # 遍历事件队列if event.type == pygame.QUIT:  # 当获取到退出事件时,将运行开关置为假,从而退出主游戏循环running = Falsepygame.quit()  # 退出pygame,清理内存

用鼠标点击来绘制形状

也就是加了监听器

import pygame  # 导入pygame模块,用于游戏开发
from pygame.locals import *  # 导入 pygame.locals 模块中的所有内容。这个模块包含了 pygame 所需的常量和函数pygame.init()  # 初始化 pygame 库,准备图形和声音库window = pygame.display.set_mode((600,600))  # 创建一个600x600像素大小的窗口
window.fill((255, 255, 255))  # 将窗口填充为白色,RGB代码为 (255,255,255)circle_positions = []  # 初始化储存圆的位置的空列表
circle_radius = 60  # 设置画圆的半径为60像素color = (0, 0, 255)  # 设置画圆的颜色为蓝色,RGB代码为 (0,0,255)run = True  # 设置运行标记为 True,这将允许主游戏循环运行
while run:  # 主游戏循环for event in pygame.event.get():  # 遍历所有事件if event.type == pygame.QUIT:  # 如果事件类型为 QUIT (通常为点击窗口关闭按钮)run = False  # 将运行标记设置为 False,退出主游戏循环elif event.type == MOUSEBUTTONDOWN:  # 如果事件类型为鼠标按钮被点击position = event.pos  # 获取鼠标当前位置circle_positions.append(position)  # 将鼠标当前位置加入到储存圆位置的列表中for position in circle_positions:  # 遍历所有的圆的位置pygame.draw.circle(window, color, position, circle_radius)  # 在指定位置绘制一个蓝色圆pygame.display.update()  # 更新屏幕显示,保证新绘制的圆立即可见
pygame.quit()  # 退出 pygame,关闭窗口

在这里插入图片描述

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

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

相关文章

WSL调用docker

WSL&#xff08;windows subsystem linux&#xff09;是window系统的原生linux子系统&#xff0c;用于代码开发很方便。 希望在wsl里面运行docker&#xff0c;首先要安装docker在WSL中使用&#xff0c;大部分人的第一想法肯定是用以下命令行安装&#xff08;个人不推荐&#x…

【C语言】指针运算

前言 前面在“走进指针世界”中我已经讲解过指针相关的很多前置知识&#xff0c;其实还有一个很重要的部分就是指针的运算。这篇博客&#xff0c;就让我们一起了解一下指针的运算吧&#xff01; 指针作为变量&#xff0c;是可以进行算术运算的&#xff0c;只不过情况会和整型…

Behind the Code:Polkadot 如何重塑 Web3 未来

2024 年 5 月 17 日 Polkadot 生态 Behind the Code 第二季第一集 《创造 Web3 的未来》正式上线。第一集深入探讨了 Polkadot 和 Web3 技术在解决数字身份、数据所有权和去中心化治理方面的巨大潜力。 &#x1f50d; 查看完整视频&#xff1a; https://youtu.be/_gP-M5nUidc?…

aws glue配置读取本地kafka数据源

创建连接时填写本地私有ip地址&#xff0c;选择网络配置 配置任务选择kafka作为数据源 但是执行任务时日志显示连接失败 文档提到只能用加密通信 如果您希望与 Kafka 数据源建立安全连接&#xff0c;请选择 Require SSL connection (需要 SSL 连接)&#xff0c;并在 Kafka priv…

滑动谜题 leetcode的BFS题目 启发如何写一个拼图编程呢

题目链接 题目要求&#xff0c;要将上面的拼板拼成123450 首先&#xff0c;转换为字符串&#xff0c;为什么要转换为字符串呢&#xff0c;因为处理会变得很简单比如示例一&#xff0c;转化为字符串是12345&#xff0c;目标字符串为123450&#xff0c;只需要证明通过某种交换&a…

JDBC(Java DataBase Connectivity)Java数据库连接

JDBC(Java DataBase Connectivity) Java 语言连接数据库 再本模块中,java提供里一组用于连接数据库的类和接口Java 语言开发者,本身没有提供如何具体连接数据库的功能只是定义了一组java程序连接数据库的访问接口 连接到数据库向数据库发送增,修改,删除这一类的sql发送查询sq…

【vue echart】完成一个简单echart图表+自适应

实现效果&#xff1a; html&#xff1a; <divref"echartOne"id"echartOne"style"width: 100%; height: 100%" ></div> js: getEchartOne() {let chart this.$echarts.init(this.$refs.echartOne);chart.setOption({title: {text:…

vue 纵向滚动菜单, 点击滚动到选中菜单

1 背景 需要设计一个纵向滚动菜单&#xff0c;要求丝滑点&#xff0c;默认显示选中菜单 2 思路 给定一个容器&#xff0c;样式包含overflow:hidden&#xff0c;默认高宽足够显示一个菜单&#xff08;以下用图标代替菜单&#xff09;&#xff0c;鼠标悬浮时增大容器高度&#…

揭秘Python的魔法:装饰器的超能力大揭秘 ‍♂️✨

文章目录 Python进阶之装饰器详解1. 引言装饰器的概念与意义装饰器在Python编程中的作用 2. 背景介绍2.1 函数作为对象2.2 高阶函数 3. 装饰器基础3.1 理解装饰器3.2 装饰器的工作原理 4. 带参数的装饰器4.1 为什么需要带参数4.2 实现带参数的装饰器使用函数包裹装饰器使用类实…

通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求

目录 一、通过el-tree自定义渲染网页版工作目录 1.1、需求介绍 1.2、使用el-tree生成文档目录 1.2.1、官方基础用法 ①效果 ②代码&#xff1a; 1.2.2、自定义文档目录&#xff08;实现鼠标悬浮显示完整名称、用icon区分文件和文件夹&#xff09; ①效果&#xff08;直接效…

语义化版本规范

Releases 是指软件或项目的正式发布版本&#xff0c;在浏览一些开源仓库时&#xff0c;可以看到当前项目最新版本和历史版本 仔细研究就会发现&#xff0c;版本号不是以固定值递增的&#xff0c;有时候第三位加 1&#xff0c;有时候加 2&#xff0c;有时候直接把第一位加 1&…

BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此

1、点开连接&#xff0c;页面出现了提示 传入一个参数text&#xff0c;里面的内容要包括I have a dream。 构造&#xff1a;?/textI have a dream。发现页面没有显示。这里推测可能得使用伪协议 在文件包含那一行&#xff0c;我们看到了next.php的提示&#xff0c;我们尝试读取…

Blender导出fbx模型,导入到ue5中模型丢失纹理材质

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题原因二、最终效果 前言 Blender导出fbx模型&#xff0c;导入到ue5中&#xff0c;发现模型丢失纹理材质&#xff0c;里面的原神人物模型妮露居然是白模&#xff0c;郁闷了大半天 一、问题原因 我在Blender导出fbx文件时…

JVM类加载

文章目录 类加载1.类的生命周期加载阶段连接阶段初始化阶段 2.类加载器类加载器的分类启动类加载器(Bootstarp)扩展类加载器&应用程序加载器 3.类的双亲委派机制什么是双亲委派机制&#xff1f;打破双亲委派机制自定义类加载器线程上下文类加载器 类加载 注&#xff1a;本…

Springboot+Vue项目-基于Java+MySQL的酒店管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

为什么选择 Flink 做实时处理

优质博文&#xff1a;IT-BLOG-CN 为什么选择 Flink 【1】流数据更真实地反映了我们的生活方式&#xff08;实时聊天&#xff09;&#xff1b; 【2】传统的数据架构是基于有限数据集的&#xff08;Spark 是基于微批次数据处理&#xff09;&#xff1b; 【3】我们的目标&#xf…

Python协程的作用

过分揣测别人的想法&#xff0c;就会失去自己的立场。大家好&#xff0c;当代软件开发领域中&#xff0c;异步编程已成为一种不可或缺的技术&#xff0c;用于处理大规模数据处理、高并发网络请求、实时通信等应用场景。而Python协程&#xff08;Coroutine&#xff09;作为一种高…

【数据结构】数据结构中的隐藏玩法——栈与队列

前言&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

【力扣刷题笔记第三期】Python 数据结构与算法

先从简单的题型开始刷起&#xff0c;一起加油啊&#xff01;&#xff01; 点个关注和收藏呗&#xff0c;一起刷题鸭&#xff01;&#xff01; 第一批题目 1.设备编号 给定一个设备编号区间[start, end]&#xff0c;包含4或18的编号都不能使用&#xff0c;如&#xff1a;418、…