上回继续,方块不断向上跳动的过程中,从视觉上看,整个背景屏幕应该不断向下滚动,而且上方要不断出现新档板(否则就没办法继续向上跳了),这节我们将来实现这种效果,感觉好象很复杂,但实现起来其实很简单,只要对main.py略做调整:

Game类的update方法改成下面这样

    def update(self):
self.all_sprites.update()
if self.player.vel.y > 0:
hits = pg.sprite.spritecollide(self.player, self.platforms, False)
if hits:
self.player.pos.y = hits[0].rect.top
self.player.vel.y = 0 # 如果方块的高度<游戏屏幕高度的1/4,则所有档板下移(视觉上表现为整个屏幕向下滚动)
if self.player.rect.top < HEIGHT / 4:
self.player.pos.y += abs(self.player.vel.y)
for plat in self.platforms:
plat.rect.top += abs(self.player.vel.y)
if plat.rect.top > HEIGHT:
# 同时为了提高性能,下移到屏幕之外的档板,清除掉(否则的话,仍然一直参与碰撞检测及渲染),游戏会越来越慢
plat.kill() # 由于下移到屏幕之外的档板被干掉,所以才继续源源不断的在上方随机补充新档板
while len(self.platforms) <= 5:
width = random.randint(50, 100)
p = Platform(random.randint(0, WIDTH - width),
random.randint(-70, -30),
width, 10)
self.platforms.add(p)
self.all_sprites.add(p)

要点:

1.  如果方块跳到了屏幕的上半部分的一半(即:1/4处), 则所有的sprite实例(即:方块自身及所有档板)都向下移动,移动的位置跟方块的垂直速度相关(即:速度越大,屏幕向下滚得越快) - tips:因为方块向上跳时,速度vel.y是负值,所以代码中要用abs函数,转换成正值。

2. 如果档板掉到屏幕下边缘之外(即看不见了),要及时清理,否则会影响游戏性能

3. 检测self.platforms容器里的档板数,如果不足5块,及时在上方随机位置,补充一块。

最新文章

  1. Winform窗体用对象数组做一个小项目
  2. sql 代码调试
  3. JAVA keytool 使用详解
  4. navicat使用
  5. C语言一维数组、二维数组、结构体的初始化
  6. 阿伦学习html5 之 Local Storage (本地储存)
  7. 本机搭建zookeeper集群
  8. Adobe Flash builder 4.6破解教程(以win764bit为例)
  9. 进军swift
  10. Python 自然语言处理(1) 计数词汇
  11. 夺命雷公狗-----React---6--props多属性的传递
  12. UIPickerView 循环滚动(一种假象)
  13. LeetCode()Substring with Concatenation of All Words 为什么我的超时呢?找不到原因了!!!
  14. Codeforces Round #310 (Div. 1) A. Case of Matryoshkas 水题
  15. javascript 事件多次绑定和删除
  16. c#程序为PDF文件填写表单内容
  17. EF 打造冲不掉的标签
  18. DropDownListFor的用法
  19. Push Notification总结系列(一)
  20. Python3基础 lambda表达式 简单示例

热门文章

  1. selenium相关:通过location 和 size 获取元素所在像素位置和尺寸,截取图片ROI
  2. jQuery滑动开关按钮效果
  3. 实践出真知-所谓&quot;java没有指针&quot;,那叫做引用!
  4. 最接近的三数之和(给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数, 使得它们的和与 target 最接近。返回这三个数的和)
  5. Noj - 在线强化训练4
  6. request和session的区别
  7. OpenCV-Python 中文教程(搬运)目录
  8. html-模仿小米首页定位案例
  9. 实现Java简单继承
  10. Manjaro (KDE)安装踩坑记录