【Python】pygame-项目实战(5)-绘制游戏图像
1. 实战项目概括
本节,我们将继续使用pygame模块完成飞机大战游戏的实战开发,飞机大战游戏的简要概括如下:
- 把一些静止的图像绘制到游戏窗口中
- 根据用户的交互或其他情况,移动这些图像,产生动画效果
- 根据图像之间是否发生重叠,判断敌机是否被摧毁等其他情况
2. 理解update()方法的作用
可以在screen
对象完成所有blit
方法之后,统一调用一次display.update
方法,同样可以在屏幕上看到最终的绘制结果。
- 使用
display.set_model()
创建的screen
对象是一个内存中的屏幕数据对象- 可以理解成是油画的画布
screen,blit
方法可以在画布上绘制很多图像- 例如:英雄、低级、子弹等等
- 这些图像有可能会彼此重叠或者覆盖
display.update()
会将画布的最终结果绘制在屏幕上,这样可以提高屏幕绘制效率,增加游戏的流畅度。
具体代码演示如下所示:该代码在所有绘制工作完成以后,最后调用一次update方法,就不需要在每次绘制后都调用update方法更新。
然而,在之前上一篇文章的案例中,对于每一个小图像的绘制,都是通过加载图像,绘制图像,更新图像这三个完整步骤来进行。(每一次都更新一遍图像效率太低了,因此,我们试试最后统一更新)
import pygame
pygame.init()
# 创建游戏的窗口 640*642
screen = pygame.display.set_mode((640, 642))
# 绘制背景图像
bg = pygame.image.load("./飞机大战资料包/images/background1.jpg")
screen.blit(bg, (0, 0))
# 绘制英雄的飞机
hero = pygame.image.load("./飞机大战资料包/images/me1.png")
screen.blit(hero, (300, 500))
# 可以在所有绘制工作完成之后,统一调用update方法
pygame.display.update()
while True:
pass
pygame.quit()
代码运行结果如下图所示:可以看出背景图和飞机图片都绘制在屏幕上了,因此update方法在最后使用可以一次性的把绘制好的图片更新在屏幕上了。
转载自:https://juejin.cn/post/7129870105462341646