使用pygame.draw绘制基本图形

import pygame

# 初始化pygame
pygame.init()

# 创建显示窗口
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("绘制基本图形")

# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

# 绘制直线
pygame.draw.line(screen, BLUE, (0, 0), (640, 480), 5)

# 绘制折线
points = [(50, 50), (100, 100), (150, 50), (200, 100), (250, 50)]
pygame.draw.lines(screen, GREEN, False, points, 3)

# 绘制三角形
triangle_points = [(300, 50), (350, 150), (250, 150)]
pygame.draw.polygon(screen, RED, triangle_points, 0)

# 绘制矩形
rect = pygame.Rect(400, 50, 100, 100)
pygame.draw.rect(screen, BLUE, rect, 2)

# 绘制圆形
pygame.draw.circle(screen, GREEN, (550, 100), 50, 0)

# 绘制椭圆形
ellipse_rect = pygame.Rect(50, 250, 200, 100)
pygame.draw.ellipse(screen, RED, ellipse_rect, 3)

# 绘制弧线
arc_rect = pygame.Rect(350, 250, 100, 100)
pygame.draw.arc(screen, BLUE, arc_rect, 0, 3.14, 2)

# 刷新屏幕
pygame.display.flip()

# 等待退出
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

这段代码使用了Python的Pygame库来绘制几种基本图形。它首先通过初始化Pygame来确保可以使用其功能。然后,它创建了一个640x480像素大小的显示窗口,并设置了窗口标题为"绘制基本图形"。

代码中定义了一些颜色常量,如黑色、白色、红色、绿色和蓝色,用于绘制图形时指定颜色。

接下来,代码使用Pygame提供的函数绘制了几种基本图形。它绘制了一条直线,一条折线,一个三角形,一个矩形,一个圆形和一个椭圆形。每个图形都可以指定颜色、位置、尺寸和线宽等属性。

最后,代码通过调用pygame.display.flip()刷新屏幕,将所有的图形绘制到屏幕上,并更新显示。然后,它进入一个无限循环,等待用户关闭窗口。当用户点击窗口的关闭按钮时,程序会退出Pygame并终止程序运行。

这段代码可以作为一个简单的示例,展示了如何使用Pygame库来绘制基本图形,并且可以通过修改参数来实现各种不同的效果。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac安装nvm以及使用nvm安装node

1. 安装nvm命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags2. 配置环境变量 vi ~/.bash_profileexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…

网络安全工具:通过监控分析日志数据保护企业网络

由于混合工作模式的兴起以及业务运营向云环境的迁移,企业网络变得更加分散和复杂,仅安装外围安全解决方案只会创建一个基本的防御层,系统、服务器和其他网络实体会生成记录所有网络活动的日志。集中式日志管理系统可以帮助管理员自动监控网络…

【教学类-45-06】正确 X-Y之间的三连加减题混合 (竖向排列)(44格:11题“++ ”11题“--”11题“ +-”11题“ -+” )

作品展示: 背景需求: 把以下四款3连题 混在一起,每种题目随机抽取11题,一共44格 出现问题: 1、- 、-里面有重复题 2、升序排列最好竖排展示 素材准备: ​ ​ 问题改正 1、单元格修改:确保竖列写入 …

【elastic search】JAVA操作elastic search

目录 1.环境准备 2.ES JAVA API 3.Spring Boot操作ES 1.环境准备 本文是作者ES系列的第三篇文章,关于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm1001.2014.3001.5502 关于ES的下载安装教程以及基本使用&…

鸿蒙Harmony--状态管理器--@Prop详解

纵横千里独行客,何惧前路雨潇潇。夜半浊酒慰寂寞,天明走马入红尘。且将新火试新茶,诗酒趁年华。青春以末,壮志照旧,生活以悟,前路未明。时间善变,可执着翻不了篇。时光磨我少年心,却…

正则表达式、文件访问(Python实现)

一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…

HelpLook VS Docusaurus:SaaS 知识库软件和 SSG 的对比

在选择文档工具时,需要考虑多个因素,如功能、易用性、成本等。Docusaurus是一个开源工具,它因其灵活性而受到文档团队的青睐,尤其是负责软件产品文档的团队。有些组织甚至可能要求使用开源软件,因此选择一个开源工具如…

读元宇宙改变一切笔记04_网络化

1. 思想实验 1.1. 如果森林中的一棵树倒下,但周围没有人听到,那它是否会发出声音? 1.1.1. “贝克莱的树” 1.2. 主观唯心主义哲学家乔治贝克莱(George Berkeley)提出的,他认为“存在就是被感知” 1.2.1. 如果有人或有其他事物…

CMake入门教程【高级篇】qmake转cmake

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1. 概述2.qmake与cmake的差异3. qmake示例4.qmake转cmake示例5.MOC、UIC和RCC…

1991-2022年A股上市公司股价崩盘风险指标数据

1991-2022年A股上市公司股价崩盘风险指标数据 1、时间:1991-2022年 2、来源:整理自csmar 3、指标:证券代码、交易年度、NCSKEW(分市场等权平均法)、NCSKEW(分市场流通市值平均法)、NCSKEW(分市场总市值平均法); NCSKEW(综合市…

网络协议与攻击模拟_03实施ARP欺骗和攻击

一、ARP攻击 1、实验环境 kali Linux (安装arpspoof工具)被攻击主机 2、kali配置 kali Linux系统是基于debian Linux系统,采用deb包管理方式,可以使用apt源的方式进行直接从源的安装。 配置kali网络源 vim /etc/apt/sources…

本地远程实时获取无人机采集视频图像(天空端 + jetson nano + 检测分割 + 回传地面端显示)

1、无线图传设备介绍 2、jetson nano天空端数据采集检测保存 3、本地回传显示 1、无线图传设备介绍 由于本设计考虑将无人机得到检测结果实时回传给地面站显示,因此需要考虑一个远程无线通信设备进行传输。本设计采用思翼HM30图传设备。通过无线图传的wifi将天空端…

基于JavaWeb+BS架构+SpringBoot+Vue协同过滤算法的体育商品推荐系统的设计和实现

基于JavaWebBS架构SpringBootVue协同过滤算法的体育商品推荐系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 1 1.1项目背景 1 1.2研究意义 2 1.3设计目的 2 1.…

【动态规划】C++ 算法458:可怜的小猪

作者推荐 视频算法专题 涉及知识点 动态规划 数学 力扣458:可怜的小猪 有 buckets 桶液体,其中 正好有一桶 含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否…

ROS2——开发第一个节点

ROS2 的包必须在 src 文件夹下,使用下面的命令创建一个包,并设置相关的依赖 ros2 pkg create my_package --dependencies rclcpp std_msgs可以打开包内的 package.xml ,查看 depend 有哪些依赖 #include "rclcpp/rclcpp.hpp" int …

路由黑洞和黑洞路由的区别

路由黑洞: 路由黑洞是一种现象,一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些不在内网中存在的网段,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配…

QML实现的图片浏览器

很久之前实现了一个QWidget版本的图片浏览器:基于Qt5的图片浏览器QHImageViewer 今天用QML也实现一个,功能差不多: ●悬浮工具栏 ●支持图片缩放、旋转、还原、旋转、拖动。 ●拖动图片时,释放鼠标图片会惯性滑动。 ●支持左右翻页查看文件夹中的图片。 ●支持保存图片至本…

03MyBatis完成CRUD+命名空间

准备工作 ○ 创建module(Maven的普通Java模块):mybatis-002-crud ○ pom.xml ■ 打包方式jar ■ 依赖: ● mybatis依赖 ● mysql驱动依赖 ● junit依赖 ● logback依赖 ○ mybatis-config.xml放在类的根路径下 ○ CarMapper.xml放…

gem5学习(11):将缓存添加到配置脚本中——Adding cache to the configuration script

目录 一、Creating cache objects 1、Classic caches and Ruby 二、Cache 1、导入SimObject(s) 2、创建L1Cache 3、创建L1Cache子类 4、创建L2Cache 5、L1Cache添加连接函数 6、为L1ICache和L1DCache添加连接函数 7、为L2Cache添加内存侧和CPU侧的连接函数 完整代码…

【书生大模型Demo-2】

书生大模型Demo 1 大模型InternLM介绍2 Demo2.1 InternLM-Chat-7B智能对话Demo2.1.1 环境配置2.1.2 模型下载2.1.3 代码准备2.1.4 运行Demo 2.2 Lagent智能体工具调用Demo2.3 浦语 灵笔图文创作理解Demo 3 作业 实践是最好的老师; 1 大模型InternLM介绍 大模型&…