Pygame | 基础图形绘制的实现

295 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

在使用 Pygame 设计游戏时,除了导入图片作为游戏中的角色,我们还可以通过库来绘制一些相对简单的基础图形,比如:矩形、圆形、直线...

比如实现一个贪吃蛇的游戏,就可以利用绘制矩形来实现贪吃蛇的移动以及它与食物之间的逻辑(网格利用画直线的指令实现,其中每一个小网格就是一个矩形)

image.png

实现方法:

pagame.draw模块

下面列举一些常见的图形绘制方法:

实现方法图形
pygame.draw.rect() 矩形
pygame.draw.polygon() 多边形
pygame.draw.circle() 圆形
pygame.draw.ellipse() 椭圆形
pygame.draw.arc() 弧线
pygame.draw.line() 直线
pygame.draw.lines() 多条连续的线段
pygame.draw.aaline() 平滑的直线(抗锯齿)
pygame.draw.aalines() 多条连续的直线

参数及实现

下面以绘制矩形和直线的参数为例,其它图形与之类似。

1. 矩形:

pygame.draw.rect(surface, color, rect, width)
  • surface ------ 游戏的主窗口,一般在进入游戏时进行实例化
  • color ------ 图形颜色,RGB值,以元组形式传入
  • rect ------ 图形的绘制位置、图形的尺寸(宽、高)
  • width ------ 图形边框的宽度,非必填项。设置为0 表示填充矩形区域(默认width为0)
    •  width == 0, 填充矩形
    •  width > 0, width值为线条的粗细
    •  width < 0, 不绘制任何内容

除此之外,还有一些关于矩形的特殊设置,都是非必填字段:

  • border_radius ------ 绘制圆角矩形。范围: 0 ~ min(height, width) / 2,border_radius = 0 表示没有圆角
  • border_top_left_radius ------ 设置左上边框的值
  • border_top_right_radius ------ 设置右上边框的值
  • border_bottom_left_radius ------ 设置左下边框的值
  • border_bottom_right_radius ------ 设置右下边框的值

注:。如果不单独设置四个边框的值,默认使用border_radius的值

2. 直线:

// 矩形
pygame.draw.line(surface, color, start_pos, end_pos, width=1)

// 平滑曲线(无锯齿)
pygame.aaline(surface, color, startpos, endpos, blend=1) 

// 多条直线
pygame.lines(surface, color, closed, pointlist, width=1)
  • start_pos ------ 起点坐标,元组形式
  • end_pos ------ 终点坐标,元组形式
  • pointlist ------ 坐标的列表
  • closed ------ True / False 是否首尾相连

3. 圆形

pygame.circle(surface, color, pos, radius, width=0)
  • pos ------ 圆心坐标
  • radius ------ 半径
  • width ------ 同矩形

矩形区域

矩形区域与上面的矩形并不是同一个概念,有时容易混淆两者的概念。在后面会详解介绍矩形区域的应用。