携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情
在使用 Pygame 设计游戏时,除了导入图片作为游戏中的角色,我们还可以通过库来绘制一些相对简单的基础图形,比如:矩形、圆形、直线...
比如实现一个贪吃蛇的游戏,就可以利用绘制矩形来实现贪吃蛇的移动以及它与食物之间的逻辑(网格利用画直线的指令实现,其中每一个小网格就是一个矩形)
实现方法:
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 ------ 同矩形
矩形区域
矩形区域与上面的矩形并不是同一个概念,有时容易混淆两者的概念。在后面会详解介绍矩形区域的应用。