Easy Games With Python and Pygame(二)- Pygame 绘制图形

226 阅读4分钟

我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛

一、绘制图形

绘制圆形

pygame.draw可以用来绘制不同的形状,pygame.draw.cirle()可以用来绘制圆

image.png 需要的参数分别为:

  • 承载圆形的Surface对象
  • 颜色
  • 圆心的X、Y坐标两个整数存入一个元组中
  • 圆的半径
  • 线条宽度,默认为0
import sys

import pygame
from pygame.locals import *

# 创建窗口参数
# 窗口大小
win_size = (1000, 500)
win = pygame.display.set_mode(win_size)
pygame.init()
# 窗口背景颜色
bg_color = (120, 120, 255)

while True:
    for event in pygame.event.get():
        if event.type in (QUIT, K_ESCAPE, KEYDOWN):
            sys.exit()

    win.fill(bg_color)
    '''开始绘制圆形'''
    # 定义圆的参数
    # 线条颜色
    color = (255, 255, 0)
    # 线条宽度
    width = 5
    # 圆心的位置
    position = (500, 250)
    # 半径
    radius = 100
    
    # 绘制圆
    pygame.draw.circle(win, color, position, radius, width)
    '''结束绘制圆形'''
    
    pygame.display_setcaption('圆形的绘制')

    # 刷新窗口
    pygame.display.update()

image.png

如果将线条宽度改为和半径一样,就变成了一个实体圆

image.png

绘制弧形

绘制弧形的步骤与绘制圆形的步骤是一样的,只不过绘制弧形需要使用到pygame.draw.arc()函数

image.png 需要传入的参数为:

  • 承载弧形的Surface对象
  • 弧形的颜色
  • 矩形左上角的X,Y坐标以及宽和高
  • 开始角度
  • 结束角度 这里需要传入角度值,因此需要导入math模块,参考上面创建圆形的代码,创建和设置窗口的代码是不变的,因此只需要将创建圆形的代码替换为创建弧形的代码即可

创建pygame_draw_arc.py文件,将创建圆形代码块替换,从win.fill(bg_color)代码开始

'''开始绘制弧形'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 200, 200, 200)
start_angle = math.radians(0)
end_angle = math.radians(180)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)
# 设置窗口标题
pygame.display.set_caption('弧形的绘制')
'''结束绘制弧形'''

pygame.display.update()代码前结束

image.png

绘制简单的椭圆

一个椭圆由上下两半部分弧形组成,因此只需要绘制两个弧形,将角度替换并往下平移,即可组成一个椭圆

'''开始椭圆上半部分'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 100, 100, 200)
start_angle = math.radians(0)
end_angle = math.radians(180)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)

'''开始绘制椭圆下半部分'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 100, 100, 200)
start_angle = math.radians(180)
end_angle = math.radians(0)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)

image.png

当然也可以使用绘制椭圆的函数pygame.draw.ellipse()

绘制椭圆

椭圆的绘制需要用到pygame.draw.ellipse()函数

image.png 传递的参数分别为:

  • 承载椭圆的Surface对象
  • 椭圆的颜色
  • 椭圆(矩形)左上角X坐标和Y坐标,以及椭圆(矩形)的宽和高4个整数存入一个元组中
  • 宽度,可选
'''绘制椭圆'''
width = 5
# 左上角的XY坐标以及宽和高
rect = (400, 100, 200, 300)
color = (255, 255, 255)
pygame.draw.ellipse(win, color, rect, 1)
pygame.display.set_caption('椭圆的绘制')

image.png

绘制多边形

pygame.draw.polygon()函数可以绘制多边形

包含了以下参数

  • 承载多边形的Surface对象
  • 多边形的颜色
  • 多边形连线的点的XY坐标构成的元组,最后一个元组将自动连接到第一个元组已完成多边形的形状
  • 线条的宽度,可选项
win.fill(window_surface_color)
color = (255, 255, 0)

# 绘制多边形
pygame.draw.polygon(win, color, ((400, 250), (291, 106), (236, 277), (56, 277), (200, 106)))

pygame.display.set_caption('多边形的绘制')

image.png

绘制一个移动的矩形

要绘制移动的图形只要不断变换图形的位置即可实现,pygame中可以使用pygame.draw.rect()函数可以绘制矩形 rect()函数需要以下参数 承载矩形的Surface对象,既窗口 矩形的颜色 矩形左上角XY坐标,以及矩形的宽和高,存入一个元组中

import sys

import pygame
from pygame.locals import *

# 创建窗口参数
# 窗口大小
win_size = (1000, 500)
win = pygame.display.set_mode(win_size)
win.get_rect()
font = pygame.font.Font(None, 60)
pygame.init()
# 窗口标题内容
pygame.display.set_caption('绘制移动的矩形')
bg_color = (120, 120, 255)

# 矩形位置和移动变量
pos_x = 200
pos_y = 200
vel_x = 2
vel_y = 1


while True:
    for event in pygame.event.get():
        if event.type in (QUIT, K_ESCAPE, KEYDOWN):
            sys.exit()

    win.fill(bg_color)

    
    # 线条颜色
    color = (255, 255, 0)
    # 线条宽度
    width = 5
    # 矩形左上角XY坐标以及宽和高
    pos = pos_x, pos_y, 100, 100
    # 绘制矩形
    pygame.draw.rect(win, color, pos, width)

    # 移动矩形
    pos_x += vel_x
    # pos_y += vel_y

    # 刷新窗口
    pygame.display.update()

屏幕录制2022-04-15 下午3.26.44.gif