专栏首页叶子陪你玩编程【pygame系列 第二课 狮子动画 】

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

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

游戏效果:

实现思路:

第一步:素材准备

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

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

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

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

1.素材准备

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

2.创建游戏窗口

代码:

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列表当中

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

代码:

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所有图片对象,说明已经加载成功,接下来就是将所有图片依次显示出来,形成动图的效果。

代码:

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更新一次

本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e),作者:青叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pygame游戏常用方法

    python做2d游戏,用的最多的就是pygame库,虽然比较老了,但是非常经典。尽管现在有很多其它游戏的库,可是都封装的比较多了,很多非常重要的细节都被隐藏了...

    用户7054460
  • 【pygame系列 第一课 创建游戏窗口 】

    python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是p...

    用户7054460
  • python小游戏设计入门5-捡金币游戏(下)

    本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地...

    用户7054460
  • Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣...

    用户1198337
  • Python 使用 pygame 实现一个简单的动画

    一个会写诗的程序员
  • Python:pygame的初步使用

    4.创建窗口,pygame.display.set_mode(resolution=(0,0),flags=0,depth=0),resolution窗口大小,...

    菜菜不吃蔡
  • pygame系列_pygame的各模块叙述

    在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用。

    Hongten
  • pygame游戏常用方法

    python做2d游戏,用的最多的就是pygame库,虽然比较老了,但是非常经典。尽管现在有很多其它游戏的库,可是都封装的比较多了,很多非常重要的细节都被隐藏了...

    用户7054460
  • 【Pygame 第1课】 hello pygame

    我们已经把python的基本内容讲得差不多了,所以从今天起,尝试一下新的方面:pygame -- 用python来写游戏。 pygame是一个python的游戏...

    Crossin先生
  • 16 Python 基础: 重点知识点--Pygame的基础知识梳理

    本文首发于腾讯云+社区,也可关注微信公众号【离不开的网】支持一下,就差你的关注支持了。

    小Gy

扫码关注云+社区

领取腾讯云代金券