🚴大家好!我是近视的脚踏实地,虽然近视,但是脚踏实地,这一篇主要讲Pygame 的基本图形绘制
(一)学习基本图形绘制有什么用
虽然说大多数的游戏都是由图片构成的,而学习Pygame就是为了游戏开发,那么学习基本图形绘制对游戏开发有什么用呢?🤔
其实,绘制基本图形对于游戏开发不是没有用,说来也奇怪,一些像素游戏也很火,尤其是一些由一些简单的图形绘制的小游戏,大概的原因如下:
1️⃣唯美的游戏界面越来越多,层出不穷,所以呢,玩家朋友们难免会出现审美疲劳。
2️⃣时下盛行的就是简约风格,只要你的游戏能够让大家看得舒服,玩得舒服,一般大家都不会拒绝简单的游戏;
3️⃣大型的游戏的CG动画绘制需要耗费相当的人力、物力和财力。
4️⃣简单的游戏更容易开发,小游戏工作室或个人即可完成开发,有更多逆袭的机会。
5️⃣游戏依托的主要平台已经从电脑端转移到手机端,那么小一个屏幕你把图像做得惟妙惟肖意义并不大。
(还多很多原因,比如说手机配置的差异大,而游戏需要很可能满足低配置的手机才能获得更大的玩家数量,那大游戏消耗大、耗电,散热都是一个需要考虑的问题,反而是一些简入门的小游戏,坐坐公交车,等等地铁就可以拿出来玩一玩,这些反而就受欢迎了,另外,简单的图形也能构造出高颜值的游戏,越是简单,越是抽象,越是抽象越是艺术)
所以在Pygame中,简单的图形绘制真的挺有用的,最好能认真学,然后呢,在Pygame的 draw 模块提供了绘制简单图形的方法。支持绘制的图形有矩形、多边形、圆形、椭圆形、弧形以及各种线条。
(二)绘制各种基本图形
1️⃣绘制矩形
用法👉 rect(Surface, color, Rect, width = 0)
绘制矩形是用draw模块下的rect方法,第一个参数Surface指定矩形将绘制在哪个对象上,第二个参数指定color矩形的颜色,第三个参数Rect指定矩形的范围,矩形的范围跟矩形类是一样的,他实际上就是一个矩形的对象,第四个参数width = 0是指定矩形边框的大小,0是表示填充这个矩形,1或者1以上就是用第二个参数指定的颜色去绘制他的边框
import pygame
import sys
from pygame.locals import *
pygame.init()
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
size = width, height = 640, 200
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Monster Demo")
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.fill(WHITE)
pygame.draw.rect(screen, BLACK, (50, 50, 150, 50), 0)
pygame.draw.rect(screen, BLACK, (250, 50, 150, 50), 1)
pygame.draw.rect(screen, BLACK, (450, 50, 150, 50), 10)
pygame.display.flip()
clock.tick(10)
解析:首先加两个宏定义WHITE = (255, 255, 255)。RGB格式都设置255,就表示是白色,BLACK = (0, 0, 0) 都设置为0就表示是白色。
接着到循环里边绘制就好了,pygame.draw.rect(screen, BLACK, (50, 50, 150, 50), 0) 就表示调用了draw模块的rect方法,然后第一个参数表示绘制在前面生成screen这个Surface对象上,第二参数颜色给个黑色,然后第三个是指定矩形范围,这里是给(50,50,150,50),坐标表示这个矩形左边和右边的坐标,第四个参数这个给个0,表示黑色会填充这个矩形
接着在这个之间前来画一个背景,即:screen.fill(WHITE),这里背景填充白色
接着在画第二个矩形,改下坐标为250这次把第四个参数改为1,表示不填充
接着再来第三个矩形,改下坐标为450,把第四个参数设置为10
最后要记得调用pygame.display.flip() 来更新一下页面,因为由于双缓冲的关系,这些绘制都是在内存中进行的,所以要用这个方法,把内存中的画面给一次性更新到显示器上,才能看的到
运行结果中需要的注意的是,第四个参数为10的时候,边框是向外扩展的,里边矩形的尺寸和我们给定是有一摸一样的,也就是说边框的宽度在原来的尺寸上,向外去扩展的
但是这样运行久后会发现你的电脑风扇就会呼呼响,这是因为那是个死循环,在死循环里边拼命绘制,而我们只需要看到就行了,而不是需要一个移动的图形,所以我们要来调低一下帧率 clock.tick(10) ,设置为一秒钟绘制10次就🉑了
2️⃣绘制多边形
用法👉 polygon(Surface, color, pointlist, width=0)
那么polygon的用法跟rect继续类似,除了第三个参数不同,第三个参数是指定多边形的各个顶点坐标构成的一个列表
import pygame
import sys
from pygame.locals import *
pygame.init(