天天看点

pygame-KidsCanCode系列jumpy-part12-platform图片

目前为止,Player的站立、行走、跳跃都是动画了,只有跳板(即:Platform类)还是难看的矩形,这节我们把Platform也换成图片:

原来的Platform类长这个样子:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

View Code

如果用图片,就不再需要w,h这个参数了(因为图片自带尺寸大小),所以变成下面这样:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

相应的,最开始初始化的5块platform信息(settings.py)

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

调整成:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

同时,调整下Player出场时的位置,让它站在最底面的第1块板上:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

 main.py里的new函数,也做相应的调整:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

main.py中的update函数里,最后再调整一下:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

跑起来看看,基本效果出来了,难看的矩形终于没有了,但是仔细观察下,漏洞百出,比如下面这些:

问题1:跳板太靠右,边界跑到屏幕外了

pygame-KidsCanCode系列jumpy-part12-platform图片

修复方法:

检测下platform的right值,如果超出边界,向左挪一点

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

问题二:platform把player实例给挡住了

类似photoshop的图层一样,pygame里也有layer的概念,最后绘制的对象,默认在最上层

pygame-KidsCanCode系列jumpy-part12-platform图片

修复方法:main.py的draw函数,在最后,强制再绘制一次player(tips: 其实有更好的办法,利用图层概念,可参考part17部分)

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

问题三:跳板叠在一起

pygame-KidsCanCode系列jumpy-part12-platform图片

解决方法:

思路:随机生成的新跳板,先不急着加入self.platforms,而是运用碰撞检测原理,与现有跳板做碰撞检测(叠在一起,肯定就碰撞上了),如果碰撞了,就扔掉(pygame下一帧会重新生成,如此循环,直到满足条件的跳板加入)

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

问题四: player已经超过了屏幕顶端,但是屏幕并没有向上滚动,这样玩家就无法看到头顶的新跳板。

pygame-KidsCanCode系列jumpy-part12-platform图片

解决办法:

先来分析下main.py中update函数中的滚动处理

如果player的y轴速度为0,abs函数算出来的值为0,所以跳板与兔子的y坐标值并不会动(也就是屏幕无法滚动),改进为下面这样:

pygame-KidsCanCode系列jumpy-part12-platform图片
pygame-KidsCanCode系列jumpy-part12-platform图片

修复了上面这一堆bug后,再来运行下:

pygame-KidsCanCode系列jumpy-part12-platform图片

源码: https://github.com/yjmyzz/kids-can-code/tree/master/part_12

作者:菩提树下的杨过

本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。