参考链接: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()
-
pygame.draw.rect()
这个函数用于在屏幕上绘制一个矩形。它的参数如下:
Surface
:要在其上绘制矩形的窗口或屏幕对象。color
:矩形的颜色。这是一个RGB值,带有三个组件(每个范围从0到255)的元组。例如,(255, 0, 0)为红色。Rect
:矩形的位置和尺寸,格式为[x坐标, y坐标, 矩形宽度, 矩形高度]。width
(可选):矩形的厚度。如果值为0(默认值)或省略,则内部填充为颜色。
-
pygame.draw.circle()
这是一个用于在屏幕上绘制一个圆形的函数。它的参数为:
Surface
:要在其上绘制圆形的窗口或屏幕对象。color
:同上,圆形的颜色。pos
:圆心的位置,格式为[x坐标, y坐标]。radius
:圆的半径。width
(可选):与上面的相同,圆的厚度。
-
pygame.draw.polygon()
这个函数用于在屏幕上绘制一个多边形。参数为:
Surface
:要在其上绘制多边形的窗口或屏幕对象。color
:多边形的颜色。pointlist
:多边形顶点的位置列表,格式为[[x1, y1], [x2, y2], …]。width
(可选):多边形的厚度。
-
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 # 颜色索引变量+1
pygame.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 / 2
else:
radius = width / 2
pygame.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 = False
pygame.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,关闭窗口