前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【pygame系列 第二课 狮子动画 】

【pygame系列 第二课 狮子动画 】

作者头像
叶子陪你玩
发布2020-03-12 14:49:05
7840
发布2020-03-12 14:49:05
举报

python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是python中专门用来编写游戏的一个引擎库,通过使用它,就可以很快的实现编写图形化的游戏。

游戏效果:

实现思路:

第一步:素材准备

网上找了一张gif动图,利用工具(我用的是爱奇艺万能播放器)将其拆分为一张张的图片。

第二步:创建游戏窗口,搭建好基本游戏框架

第三步:创建一个lions列表,利用for循环,将所有的图片load到lions列表当中

第四步:利用人眼暂留效应,将一张张图片渲染出来

1.素材准备

可以自己用其它的图片素材,或者找我提供也可以。

2.创建游戏窗口

代码:

代码语言:javascript
复制
import pygame
# 使用前先需要初始化,初始化所有被导入的pygame子模块,固定用法
pygame.init()   # 初始化pygame
# 游戏肯定是在一个窗口中,那我们先来创建一个窗口
size = width, height = 800, 533     # 设置窗口大小
screen = pygame.display.set_mode(size)  # 设置
pygame.display.set_caption("狮子动画")
while True:  # 死循环确保窗口一直显示
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 如果单击关闭窗口,则退出
            sys.exit()

    screen.fill([255, 255, 255])
    pygame.display.flip()  # 更新

pygame.quit()  # 退出pygame

效果图:

3.将所有的图片load到lions列表当中

游戏界面显示出来后,下面加载所有狮子图片,利用循环和字符串拼接方法实现。

代码:

代码语言:javascript
复制
import pygame
# 使用前先需要初始化,初始化所有被导入的pygame子模块,固定用法
pygame.init()   # 初始化pygame
# 游戏肯定是在一个窗口中,那我们先来创建一个窗口
size = width, height = 800, 533     # 设置窗口大小
screen=pygame.display.set_mode(size)# 设置
pygame.display.set_caption("狮子动画") # 设置标题

lions=[] # 创建一个列表,存储狮子图片对象
Dir = './lion/' # 狮子文件路径位置
for i in range(1,15):
    lions.append(pygame.image.load(Dir+'lion_'+str(i)+'.png'))

print(lions) # 打印查看效果

# while True:  # 死循环确保窗口一直显示
#     for event in pygame.event.get():  # 遍历所有事件
#         if event.type == pygame.QUIT:  # 如果单击关闭窗口,则退出
#             sys.exit()

#     screen.fill([255,255,255])
#     pygame.display.flip() # 更新

# pygame.quit()  # 退出pygame

效果:

4.将所有图片渲染出来

print所有图片对象,说明已经加载成功,接下来就是将所有图片依次显示出来,形成动图的效果。

代码:

代码语言:javascript
复制
import pygame
# 使用前先需要初始化,初始化所有被导入的pygame子模块,固定用法
pygame.init()   # 初始化pygame
# 游戏肯定是在一个窗口中,那我们先来创建一个窗口
size = width, height = 800, 533     # 设置窗口大小
screen=pygame.display.set_mode(size)# 设置
pygame.display.set_caption("狮子动画") # 设置标题

lions=[] # 创建一个列表,存储狮子图片对象
Dir = './lion/' # 狮子文件路径位置

for i in range(1,15):
    lions.append(pygame.image.load(Dir+'lion_'+str(i)+'.png'))

# print(lions) # 打印查看效果
index = 0 # 图片索引
while True:  # 死循环确保窗口一直显示
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 如果单击关闭窗口,则退出
            sys.exit()

    screen.fill([255,255,255]) # 绘制背景白色
    # 因为只有14张图片,一直循环增加会超出索引,通过取余实现从头再来的效果
    screen.blit(lions[index%14], [0, 0]) # 将图片显示出来
    # 显示下一张图片的索引
    index+=1
    # 设置更新间隔,数字越小,更新越快
    pygame.time.wait(100)
    pygame.display.flip() # 更新

pygame.quit()  # 退出pygame

效果图:

总结:

本文通过人眼暂留的一个原理实现了一个动态的效果。

index%14是取余运算,结果的数值不会超过14,所以可以起到防止索引超出范围。

pygame.time.wait(100):设置更新速率,每隔100ms更新一次

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.素材准备
  • 2.创建游戏窗口
  • 3.将所有的图片load到lions列表当中
  • 4.将所有图片渲染出来
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档