当前位置: 首页 > news >正文

pygame学习(二)——绘制线条、圆、矩形等图案

导语

pygame是一个跨平台Python库(pygame news),专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生,提供图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。使用pygame,理论上可以开发设计市面上所有的2D类型游戏。

 正文

1、绘制线条 

我们可以使用 pygame.draw.line()函数来绘制直线。

pygame.draw.line(screen,线段的颜色,起点坐标,终点坐标,线宽)

pygame.draw.line(screen ,lightgreen, (300,0), (300,600), linewidth)

import pygame #导包
from pygame.locals import*
import sysblack=0,0,0
lightgreen=144,238,144pygame.init() #初始化
screen = pygame.display.set_mode(size=(600,600),flags=0)
#绘制一个600*600的框框while True:for event in pygame.event.get():if event.type in (QUIT,KEYDOWN):sys.exit()#python的退出程序linewidth=4 #“线”的粗细pygame.draw.line(screen,lightgreen,(300,0),(300,600),linewidth)pygame.display.update()  # 刷新展示

2、绘制网格 

通过循环绘制一个网格大小为三十像素的网络 

import pygame #导包
from pygame.locals import*
import sysblack=0,0,0
lightgreen=144,238,144screen_width=600
screen_height=600pygame.init() #初始化
screen = pygame.display.set_mode(size=(screen_width,screen_height),flags=0)
#绘制一个600*600的框框# 设置网格大小
grid_size = 30  # 每个网格的大小为30个像素# 绘制网格
for i in range(0, screen_width, grid_size):pygame.draw.line(screen, lightgreen, (i, 0), (i, screen_height))
for i in range(0, screen_height, grid_size):pygame.draw.line(screen, lightgreen, (0, i), (screen_width, i))while True:for event in pygame.event.get():if event.type in (QUIT,KEYDOWN):sys.exit()#python的退出程序linewidth=4pygame.display.update()  # 刷新展示

3、绘制圆

pygame.draw.circle(screen,lightgreen,position,radius,linewidth)

通过pygame.draw.circle()可以画圆

  • screen代表屏幕
  • lightgreen代表着圆的颜色
  • position代表着圆心所在的位置
  • radius代表着圆的半径
  • linewidth代表着线的粗细 
import pygame #导包
from pygame.locals import*
import sysblack=0,0,0
lightgreen=144,238,144screen_width=600
screen_height=600pygame.init() #初始化
screen = pygame.display.set_mode(size=(screen_width,screen_height),flags=0)
#绘制一个600*600的框框# 主循环
while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()color = 255,255,255position = 300,250radius = 100width = 10linewidth=4screen.fill(color)pygame.draw.circle(screen,lightgreen,position,radius,linewidth)pygame.display.update()  # 刷新展示

 

4、绘制矩形

pygame.draw.rect() 是pygame库中的一个函数,用于在给定的屏幕上绘制一个矩形。

函数的参数解释如下:

  • screen: 这是你要在其上绘制矩形的pygame Surface 对象。
  • lightgreen: 这是矩形的颜色。它是一个包含RGB值的元组,例如 (144, 238, 144)。
  • pos: 这是矩形左上角的坐标 + 以左上标点为原点的右下角坐标,下面给出了具体例子。
  • width: 这是矩形的宽度。这是一个整数。
import pygame #导包
from pygame.locals import*
import sysscreen_width=600
screen_height=600
pygame.init() #初始化
screen = pygame.display.set_mode(size=(screen_width,screen_height))
pygame.display.set_caption("这是标题")
pos_x = 300
pos_y =300while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()lightgreen=144,238,144width = 0pos = pos_x, pos_y, 300, 300pygame.draw.rect(screen, lightgreen, pos, width)#300*300的矩形pygame.display.update()

 绘制右下角的矩形区域:

 5、绘制一个会动的矩形

设置屏幕的宽度和高度为600x600像素。 定义矩形的横向和纵向移动速度为0.14像素/帧。  每次循环将背景填充为黑色。 根据速度更新矩形的位置。 当矩形超出屏幕边界时,改变其速度的方向,使其反向移动。 使用pygame.draw.rect()方法绘制矩形,设置颜色为黄色,宽度为0(实心矩形)。

import pygame #导包
from pygame.locals import*
import sysscreen_width=600
screen_height=600
pygame.init() #初始化
screen = pygame.display.set_mode(size=(screen_width,screen_height))
pygame.display.set_caption("这是标题")
pos_x = 300
pos_y =300
vel_x = 0.14
vel_y = 0.1#粗略滴可以看作矩形的移动速度
while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()screen.fill((0,0,0))#每次循环都要将背景置为黑色pos_x += vel_xpos_y += vel_y#当矩形超过屏幕范围后返回if pos_x > 500 or pos_x < 0:vel_x = -vel_xif pos_y > 500 or pos_y < 0:vel_y = -vel_y
#绘制矩形color = 255, 255, 1width = 0pos = pos_x,pos_y, 100, 100pygame.draw.rect(screen,color,pos,width)pygame.display.update()

 视频没发上来,有兴趣的自己运行一下吧。

 6、还有哪些常用的绘制图形方法?

Pygame 提供了多种绘制图形的方法,这些方法主要用于在 Surface 对象上绘制基本的几何形状。以下是一些常用的 Pygame 绘制图形的方法:

  1. pygame.draw.polygon(): 用于绘制多边形。你需要提供一个点的列表来定义多边形的顶点,以及多边形的颜色。

  2. pygame.draw.ellipse(): 用于绘制椭圆。你需要指定一个矩形区域,椭圆将在这个区域内绘制,同时还需要指定椭圆的颜色。

  3. pygame.draw.arc(): 用于绘制圆弧。你需要指定一个矩形区域,圆弧将在这个区域内绘制,同时还需要指定圆弧的起始和结束角度、颜色。

  4. pygame.draw.lines(): 用于绘制一系列相连的线段,可以创建开放或闭合的多边形。你需要提供一个点的列表来定义线段的顶点,以及线段的颜色和宽度。

  5. pygame.draw.aaline() 和 pygame.draw.aalines(): 用于绘制抗锯齿线段,可以平滑线段的边缘。这两个方法只能绘制一个像素宽的线段,不支持设置线宽。

小结

在本篇文章中,主要介绍了如何绘制一条线、圆形、矩形、以及简单地实现了将矩形“动起来”,每个例子都有其对应的完整代码,可以直接复制使用。

相关文章:

pygame学习(二)——绘制线条、圆、矩形等图案

导语 pygame是一个跨平台Python库(pygame news)&#xff0c;专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生&#xff0c;提供图像模块&#xff08;image&#xff09;、声音模块&#xff08;mixer&#xff09;、输入/输出&#xff08;鼠标、键盘、显示屏&#xff09;模…...

TCL学习笔记(持续更新)

前言&#xff1a; TCL&#xff08;tool common language&#xff09;是一种通用工具语言&#xff0c;很多eda tool都支持tcl&#xff0c;学习了解一些tcl基本语法还是很有必要的。 1&#xff1a;基础概念 解释器&#xff1a; #!/usr/bin/tclsh 打印&#xff1a; puts -> p…...

Xpath的问题:为什么在DOM中确定存在(可见)的元素,用//表达式匹配不到(附解决办法)

今天遇到一个很有意思的问题&#xff0c;我的爬取的目标页面上有时会出现一个弹窗&#xff0c;它挡住我点击其它按钮了&#xff0c;我想找到它的关闭按钮&#xff0c;自动点击一下关闭掉&#xff0c;本来是很简单的事情&#xff0c;但偏偏出问题了&#xff0c;DOM中看到的html是…...

有没有游泳可以戴的耳机?游泳耳机入耳式好,还是骨传导好

游泳是一项既能锻炼身体又能让人放松心情的运动。我们知道&#xff0c;音乐能够为我们的水上时光增添更多的乐趣。那么&#xff0c;在众多游泳耳机中&#xff0c;如何选择一款既适合自己的需求又具备良好性能的产品呢&#xff1f; 首先&#xff0c;我们要了解的是&#xff0c;…...

【绘图软件】自用安装教程

链接&#xff1a;https://pan.baidu.com/s/17r9Pr460FzkULU7fTr91_w?pwdftv7 提取码&#xff1a;ftv7 --来自百度网盘超级会员V6的分享解压并且右键打开set up 解压crack软件前需要退出杀毒软件&#xff0c; 关闭实时保护 域网络关闭&#xff0c;专用网络关闭&#xff0…...

AIGC时代-GPT-4和DALL·E 3的结合

在当今这个快速发展的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了我们生活中不可或缺的一部分。从简单的自动化任务到复杂的决策制定&#xff0c;AI的应用范围日益扩大。而在这个广阔的领域中&#xff0c;有两个特别引人注目的名字&#xff1a;GPT-4和D…...

springBoot集成RabbitMQ实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收

该项目介绍了springboot如何集成rabbitMQ消息中间件,实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收 pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId...

Attention机制

目录 提出背景 Attention原理 Attention机制本质思想 Attention机制总结 改进&#xff1a;Self-Attention 前置知识&#xff1a;RNN&#xff0c;LSTM/GRU 提出背景 Attention模型是基于Encoder-Decoder框架提出的。Encoder-Decoder框架&#xff0c;也就是编码-解码框架&…...

Rust 常用的第三方库

Rust 的标准库虽然已经很强大&#xff0c;但如果恰当地使用第三方库&#xff0c;可以大大改善编程效率。以下是一些常用的 Rust 第三方库。 tokio ---- 最通用的异步编程库&#xff0c;几乎可以说是行业标准了&#xff0c;大量的其它库依赖于tokio。reqwest ---- HTTP 客户端库…...

构建高可用性Java应用:介绍分布式系统设计与开发

构建高可用性Java应用需要考虑许多因素&#xff0c;其中之一是设计和开发分布式系统。分布式系统是由多个独立计算机或节点组成的系统&#xff0c;这些节点通过网络连接&#xff0c;共同完成一项任务。 在分布式系统设计和开发中&#xff0c;有几个关键方面需要考虑&#xff1…...

x-cmd pkg | gitui - git 终端交互式命令行工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 gitui 由 Stephan D 于 2020 年使用 Rust 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x gitui 即可自动下载并使用 在终端运行 eval "$(curl https:/…...

javaWeb案例知识点

一.rest风格编程 二.综合案例结构 三.分页查询 分页插件PageHelper 四.部门管理开发 五.员工管理开发 六.文件上传...

SQL日期列更新操作详解

在实际的数据库管理过程中&#xff0c;有时我们需要对数据库中的日期列进行更新。这篇博客将详细介绍一条 SQL 语句&#xff0c;该语句用于更新 referral_up_order 表中的多个日期列&#xff0c;并将它们的日期部分更改为 2023-10-24&#xff0c;同时保留原始时间部分。 1、背…...

stable diffusion 基础教程-图生图

界面 图生图大概有以下几个功能: 图生图涂鸦绘制局部绘制局部绘制(涂鸦蒙版)其常用的也就上面四个,接下来逐步讲解。 以图反推提示词 图生图可以根据反推提示词来获取相应图片的提示词,目前3种主流方式,如下: CLIP反推提示词:推导出的文本倾向于自然语言的描述方式,…...

如何获取高质量的静态住宅代理?常见问题与误区

静态住宅IP代理在今天的网络营销领域扮演着至关重要的角色&#xff0c;静态住宅IP代理以其稳定性和高匿名性&#xff0c;为互联网业务提供了一个安全的执行环境。通过模拟真实用户的网络行为&#xff0c;这些IP代理降低了企业在网络营销活动中被识别和封禁的风险。它保护了企业…...

基于SpringBoot的旅游网站281

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的旅游网站281,java项目。…...

做外贸没客户就静下来沉淀

最近有人说&#xff0c;现在手上的各种群都变得很安静了&#xff0c;像之前&#xff0c;到各种节日&#xff0c;比如国庆&#xff0c;冬至&#xff0c;元旦这些。群里都非常热闹&#xff0c;不说全部人&#xff0c;总会有几个人发红包&#xff0c;或者发祝贺信息的。今年发现&a…...

网络流总结

网络流总结 基础知识最大流最小割定理 最大流EKdinic模型二分图匹配无源汇上下界可行流有源汇上下界最大、最小流多源汇最大流最大流之关键边最大流之拆点最大流建图实战 最小割模型最大权闭合子图最大密度子图最小点权覆盖集最大点权独立集最小割建图实战 费用流EK模型费用流与…...

安卓11通过脚本修改相应板型系统属性

安卓10以后rk的一套源码兼容很多板型&#xff0c;多种cpu型号都兼容了&#xff0c;这一点相比之前省心了很多&#xff0c;所以就诞生了需要一套代码兼容多种板子的需求&#xff0c;定制修改中需要经常修改系统属性&#xff0c;通过以下脚本一次实现&#xff1a; #!/bin/bashfu…...

网络安全—PKI公钥基础设施

文章目录 前提知识散列函数非对称加密数字签名 PKI受信任的人RA注册CA颁发IKE数字签名认证&#xff08;交换证书&#xff09;密钥管理 前提知识 散列函数 散列也可以叫哈希函数&#xff0c;MD5、SHA-1、SHA-2、、&#xff08;不管叫啥&#xff0c;都记得是同一个东西就行&…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...