我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛”
一、绘制图形
绘制圆形
pygame.draw可以用来绘制不同的形状,pygame.draw.cirle()可以用来绘制圆
需要的参数分别为:
- 承载圆形的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()
如果将线条宽度改为和半径一样,就变成了一个实体圆
绘制弧形
绘制弧形的步骤与绘制圆形的步骤是一样的,只不过绘制弧形需要使用到pygame.draw.arc()函数
需要传入的参数为:
- 承载弧形的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()
代码前结束
绘制简单的椭圆
一个椭圆由上下两半部分弧形组成,因此只需要绘制两个弧形,将角度替换并往下平移,即可组成一个椭圆
代码语言:javascript复制'''开始椭圆上半部分'''
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)
当然也可以使用绘制椭圆的函数pygame.draw.ellipse()
绘制椭圆
椭圆的绘制需要用到pygame.draw.ellipse()函数
传递的参数分别为:
承载椭圆的Surface对象
椭圆的颜色
椭圆(矩形)左上角X坐标和Y坐标,以及椭圆(矩形)的宽和高4个整数存入一个元组中
宽度,可选
代码语言:javascript复制'''绘制椭圆'''
width = 5
# 左上角的XY坐标以及宽和高
rect = (400, 100, 200, 300)
color = (255, 255, 255)
pygame.draw.ellipse(win, color, rect, 1)
pygame.display.set_caption('椭圆的绘制')
绘制多边形
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('多边形的绘制')
绘制一个移动的矩形
要绘制移动的图形只要不断变换图形的位置即可实现,pygame中可以使用pygame.draw.rect()函数可以绘制矩形 rect()函数需要以下参数 承载矩形的Surface对象,既窗口 矩形的颜色 矩形左上角XY坐标,以及矩形的宽和高,存入一个元组中
代码语言:javascript复制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()