哪些游戏是pygame写的精灵绘制帧问题

本系列博客介绍以python+哪些游戏是pygame写嘚库进行小游戏的开发有写的不对之处还望各位海涵。

直到现在我们已经学了很多哪些游戏是pygame写的基础知识了从这篇博客开始我们将會学习哪些游戏是pygame写的中高级部分,更多和精灵模块冲突检测相关的知识。

在哪些游戏是pygame写的.sprite模块里面包含了一个名为Sprite类他是哪些游戲是pygame写的本身自带的一个精灵。但是这个类的功能比较少因此我们新建一个类对其继承,在sprite类的基础上丰富以方便我们的使用。

首先來了解一下如何使用sprite类来加载动画吧

将要加载的动画帧放在一个精灵序列图里面,然后在程序里面调用它哪些游戏是pygame写的会自动更新動画帧,这样一个动态的图像就会展现在我们面前了

下面是一个典型的精灵序列图:行和列的索引都是从0开始的。

在加载一个精灵图序列的时候我们需要告知程序一帧的大小,(传入帧的宽度和高度文件名)。

除此之外还需要告诉精灵类,精灵序列图里面有多少列load函数可以加载一个精灵序列图。

一个循环动画通常是这样工作的:从第一帧不断的加载直到最后一帧然后在折返回第一帧,并不断重複这个操作

但是如果只是这样做的话,程序会一股脑地将动画播放完了我们想让它根据时间间隔一张一张的播放,因此加入定时的代碼

然后将ticks变量传递给sprite的update函数,这样就可以轻松让动画按照帧速率来播放了哦,帧速率还没有设置咱们现在设置一下帧速率。

启动一個定时器然后调用tick(num)函数就可以让游戏以num帧来运行了。

sprite.draw()方法是用来绘制帧的但是这个函数是由精灵来自动调用的,我们没有办法重寫它因此需要在update函数里面做一些工作。

首先需要计算单个帧左上角的xy位置值(x表示列编号,y表示行编号):

然后将计算好的xy值传递給位置rect属性。

当程序中有大量的实体的时候操作这些实体将会是一件相当麻烦的事,那么有没有什么容器可以将这些精灵放在一起统一管理呢***就是精灵组。

哪些游戏是pygame写的使用精灵组来管理精灵的绘制和更新精灵组是一个简单的容器。

好了通过前面的学习,我們已经了解了一些精灵的知识了现在我们将前面说到的方法封装成一个自定义的类,以方便我们的调用这个类继承自哪些游戏是pygame写的.sprite.Sprite:

好了现在我们写一个小程序来测试一下这个类的性能怎么样。

这里我用ps制作了一个简单的精灵序列图咱们就用这个萌萌的嗷大喵好了:

效果图:萌萌的嗷大喵跃然于屏幕上。看起来功能还不错的说

大家也可以制作一些自己喜欢的精灵序列图,然后加载并查看他们的效果

关于精灵与精灵之间的冲突检测,精灵与组之间的碰撞检测我们将会放在下个博客一起学习。

本系列博客介绍以python+哪些游戏是pygame写嘚库进行小游戏的开发有写的不对之处还望各位海涵。

直到现在我们已经学了很多哪些游戏是pygame写的基础知识了从这篇博客开始我们将會学习哪些游戏是pygame写的中高级部分,更多和精灵模块冲突检测相关的知识。

在哪些游戏是pygame写的.sprite模块里面包含了一个名为Sprite类他是哪些游戲是pygame写的本身自带的一个精灵。但是这个类的功能比较少因此我们新建一个类对其继承,在sprite类的基础上丰富以方便我们的使用。

首先來了解一下如何使用sprite类来加载动画吧

将要加载的动画帧放在一个精灵序列图里面,然后在程序里面调用它哪些游戏是pygame写的会自动更新動画帧,这样一个动态的图像就会展现在我们面前了

下面是一个典型的精灵序列图:行和列的索引都是从0开始的。

在加载一个精灵图序列的时候我们需要告知程序一帧的大小,(传入帧的宽度和高度文件名)。

除此之外还需要告诉精灵类,精灵序列图里面有多少列load函数可以加载一个精灵序列图。

一个循环动画通常是这样工作的:从第一帧不断的加载直到最后一帧然后在折返回第一帧,并不断重複这个操作

但是如果只是这样做的话,程序会一股脑地将动画播放完了我们想让它根据时间间隔一张一张的播放,因此加入定时的代碼

然后将ticks变量传递给sprite的update函数,这样就可以轻松让动画按照帧速率来播放了哦,帧速率还没有设置咱们现在设置一下帧速率。

启动一個定时器然后调用tick(num)函数就可以让游戏以num帧来运行了。

sprite.draw()方法是用来绘制帧的但是这个函数是由精灵来自动调用的,我们没有办法重寫它因此需要在update函数里面做一些工作。

首先需要计算单个帧左上角的xy位置值(x表示列编号,y表示行编号):

#用帧数目除以行数然后茬乘上帧的高度

然后将计算好的x,y值传递给位置rect属性

当程序中有大量的实体的时候,操作这些实体将会是一件相当麻烦的事那么有没囿什么容器可以将这些精灵放在一起统一管理呢?***就是精灵组

哪些游戏是pygame写的使用精灵组来管理精灵的绘制和更新,精灵组是一个簡单的容器

好了,通过前面的学习我们已经了解了一些精灵的知识了,现在我们将前面说到的方法封装成一个自定义的类以方便我們的调用,这个类继承自哪些游戏是pygame写的.sprite.Sprite:

好了现在我们写一个小程序来测试一下这个类的性能怎么样

这里我用ps制作了一个简单的精灵序列图,咱们就用这个萌萌的嗷大喵好了:

效果图:萌萌的嗷大喵跃然于屏幕上看起来功能还不错的说。

大家也可以制作一些自己喜欢嘚精灵序列图然后加载并查看他们的效果。

关于精灵与精灵之间的冲突检测精灵与组之间的碰撞检测,我们将会放在下个博客一起学***

本文参与,欢迎正在阅读的你也加入一起分享。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐