使用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.mzph.cn/pingmian/15001.shtml

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

相关文章

高开高走的续作,可不止《庆余年2》

说起最近霸屏的影视剧&#xff0c;莫过于《庆余年2》。火爆全网的讨论度总归是没有辜负观众们五年的等待&#xff0c;在五月的影视市场独占鳌头已成定局。张若昀、陈道明、李沁等一众演员稳定发挥&#xff0c;剧情节奏随着故事发展渐入佳境&#xff0c;评分一路高涨。 对影视作…

ZYNQ ARM IIC EMIO读写ADXL345三轴陀螺仪

1 三轴陀螺仪介绍 ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导…

iCloud 照片到 Android 指南:帮助您快速将照片从 iCloud 传输到安卓手机

​ 概括 iOS 和 Android 之间的传输是一个复杂的老问题。将 iCloud 照片传输到 Android 似乎是不可能的。放心。现在的高科技已经解决了这个问题。尽管 Apple 和 Android 不提供传输工具&#xff0c;但您仍然有其他有用的选项。这篇文章与您分享了 5 个技巧。因此&#xff0c;…

Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现

目录 一、用Springboot读取本地工作目录的文件和文件结构 1.1、需求介绍 1.2、后端传递数据 1.2.1、语言框架 1.2.2、本地工作目录示范 1.2.3、后端代码 ①controller层 ②service层 ③响应的数据 二、总结 一、用Springboot读取本地工作目录的文件和文件结构 1.1、…

Win10玩红警黑屏有声音的解决方法

Win10玩红警黑屏怎么解决&#xff1f;红色警戒&#xff0c;可以说是一款深受青少年朋友喜爱的网游&#xff0c;但是&#xff0c;当我们在使用win10电脑运行红色警戒的时候免不了会出现不兼容、权限不足等问题。相信玩过红警的小伙伴都有遇到过黑屏的问题&#xff0c;那该怎么解…

网络统一监控运维管理解决方案(ppt原件方案)

网络统一监控运维管理解决方案 1. 构建完善的网络运维体系&#xff1a;通过组织、流程、制度的完善、支撑手段的建设&#xff0c;构建低成本高效率的IT运营体系&#xff0c;推动IT运营工作自动化、智能化、一体化化发展。 2. 构建网络一体化监控能力&#xff1a;构建从设备、…

【C语言】冒泡排序详解

前言 排序&#xff0c;就是将一组数据按特定的规则调换位置&#xff0c;使这组数据具有某种顺序关系&#xff0c;一般就是递增或递减。 在接触C语言不久&#xff0c;我们就会遇到其中一种有名的排序算法——“冒泡排序”&#xff0c;不知道你是否已经掌握了&#xff0c;如果还…

【Go语言入门学习笔记】Part3.指针和运算符、以及基本输入

一、前言 仍然好多和C语言类似&#xff0c;计算机的学生应该是很容易入门这一环节&#xff0c;我还在最后的输入中看到了一些些Java输入的影子&#xff0c;而自动的变量类型推断更是有Python那个味道&#xff0c;正可谓几百家之所长了。 二、学习代码 package mainimport (&q…

鸿蒙系统和安卓系统通过termux搭建Linux系统—Centos

目录 1. 前言 2. 效果图展示 3. 安装termux 4. 安装Centos系统 4.1 更换源 4.2 拉取镜像 4.3 启动centos 5.结尾 1. 前言 大家好&#xff0c;我是jiaoxingk 今天这篇文章让你能够在手机或者平板上使用Linux-Centos系统 让你随时随地都能操作命令行进行装13 2. 效果图展示…

就业班 第三阶段(CICD) 2401--5.15 day2 自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

一、平滑发布与灰度发布 **什么叫平滑&#xff1a;**在发布的过程中不影响用户的使用&#xff0c;系统不会因发布而暂停对外服务&#xff0c;不会造成用户短暂性无法访问&#xff1b; **什么叫灰度&#xff1a;**发布后让部分用户使用新版本&#xff0c;其它用户使用旧版本&am…

【吊打面试官系列】Java高并发篇 - ReadWriteLock 是什么 ?

大家好&#xff0c;我是锋哥。今天分享关于 【ReadWriteLock 是什么 &#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; ReadWriteLock 是什么 &#xff1f; 首先明确一下&#xff0c;不是说 ReentrantLock 不好&#xff0c;只是 ReentrantLock 某些时候有局限。 …

2024/5/22 学习杂记

为什么功率放大电路在模电中经常提到&#xff1f; 模拟信号&#xff1a;它是连续变化的电信号&#xff0c;它在时间上和幅度上都是连续的&#xff0c;能够代表信息的连续变化。大多数物理量为模拟信号&#xff0c;如&#xff1a;温度、压力、流量… 非电物理量通过传感器变换成…

鸿蒙 DevEcoStudio:发布进度条通知

使用notificationManager及wantAgent实现功能import notificationManager from ohos.notificationManager import wantAgent from ohos.app.ability.wantAgent Entry Component struct Index {State message: string 发布进度条通知progressValue: number0async publicDownloa…

基于DdddOcr通用验证码离线本地识别SDK搭建个人云打码接口Api

前言 最近介绍了一款免费的验证码识别网站,识别效率太低,考虑到ddddocr是开源的,决定搭建搭建一个,发现原作者sml2h3已经推出好久了,但是网上没有宝塔安装的教程,于是本次通过宝塔搭建属于自己的带带弟弟OCR通用验证码离线本地识别 原项目地址:https://github.com/sml2…

Serverless应用引擎SAE评测|一分钟部署在线游戏

Serverless应用引擎SAE评测|一分钟部署在线游戏 什么是Serverless应用引擎SAE一分钟部署在线游戏SAE控制台 资源释放其他操作 在进行Serverless应用引擎SAE评测之前&#xff0c;首先需要了解一下什么是SAE。 什么是Serverless应用引擎SAE Serverless应用引擎SAE&#xff08;Se…

【EXCEL_VBA_基础知识】15 使用ADO操作外部数据

课程来源&#xff1a;王佩丰老师的《王佩丰学VBA视频教程》&#xff0c;如有侵权&#xff0c;请联系删除&#xff01; 目录 1. 使用ADO链接外部数据源 2. 常用SQL语句&#xff08;Execute(SQL语句)&#xff09; 2.1 查询数据、查询某几个字段、带条件查询、合并两表数据、插…

手把手教你解决 Hive 的数据倾斜

文章目录 数据倾斜是什么&#xff1f;产生数据倾斜的场景1.空值引发的数据倾斜2.不可拆分的大文件产生的数据倾斜3.数值膨胀引发的数据倾斜4.不同数据类型引发的数据倾斜5.Count(distinct) 引发的数据倾斜6.表 Join 操作时引发数据倾斜7.group by 引发的数据倾斜 解决数据倾斜数…

Python | Leetcode Python题解之第100题相同的树

题目&#xff1a; 题解&#xff1a; class Solution:def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:if not p and not q:return Trueif not p or not q:return Falsequeue1 collections.deque([p])queue2 collections.deque([q])while queue1 and queue2:node…

网络拓扑—FTP服务搭建

文章目录 FTP服务搭建网络拓扑配置网络FTPPC 安装FTP服务配置FTP服务FTP用户配置—1PC机访问FTP站点IE浏览器访问终端访问 FTP用户配置—2PC机访问ftp站点IE浏览器访问终端访问 FTP服务搭建 网络拓扑 //交换机忽略不计 FTP服务IP&#xff1a;192.168.1.1 PC机IP&#xff1a;19…