接上回继续,方块不断向上跳动的过程中,从视觉上看,整个背景屏幕应该不断向下滚动,而且上方要不断出现新档板(否则就没办法继续向上跳了),这节我们将来实现这种效果,感觉好象很复杂,但实现起来其实很简单,只要对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.topself.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块,及时在上方随机位置,补充一块。

转载于:https://www.cnblogs.com/yjmyzz/p/ygame-kidscancode-part5-screen-scroll.html

pygame-KidsCanCode系列jumpy-part5-屏幕滚动相关推荐

  1. (六)通过pygame让游戏背景图像实现交替滚动

    python飞机大战系列文章(按顺序) (一)通过pygame 将自己的图像添加到游戏中 (二)通过pygame让游戏人物 动起来 (三)通过pygame处理用户的鼠标键盘操作(事件和监听 (四)详解 ...

  2. iphone X系列设配屏幕适配

    2019独角兽企业重金招聘Python工程师标准>>> 截止目前,苹果所有刘海系列的设备屏幕数据如下: iPhone X .iPhone XS: 5.8英寸, 375pt * 812 ...

  3. JS+CSS打造随屏幕滚动的quick快速导航代码

    代码内容: <html> <head> <title>JS+CSS打造随屏幕滚动的quick快速导航代码_网页代码站(www.webdm.cn)</title ...

  4. 【解决方法】屏幕滚动时文字短暂变蓝

    显示器:飞利浦 PHLC0AC 227E4LH 显卡:Nvidia GeForce GT 710 问题描述:屏幕滚动时(包括网页滚动.word文档内滚动等)出现文字短暂变蓝,变蓝的情况只在滚动瞬时出现 ...

  5. 微信小程序-监听屏幕滚动

    一.效果: 功能描述:监听屏幕滚动,实现向下滚动时搜索框和分类选项置顶,向上滚动页面恢复原样. 二.实现: 运用页面Page()函数中的onPageScroll方法,来监听屏幕滚动的距离. 1).js ...

  6. div随着屏幕滚动而滚动

    div随着屏幕滚动而滚动 <script type="text/javascript">     $(document).ready(function () {     ...

  7. 关于移动端使用position:fixed/absolute出现随屏幕滚动情况

    关于移动端使用position:fixed/absolute出现随屏幕滚动情况_xiasohuai的博客-CSDN博客 如下图,按钮使用了position:absolute绝对定位,但是在苹果手机上会 ...

  8. stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果

    这次做项目时需要实现OLED屏幕上字符滚动的功能,从网上找到一个参考:https://blog.csdn.net/tbmmagic/article/details/111999673 int main ...

  9. react实现bilibili的侧边屏幕滚动导航

    react实现类似于bilibili的右侧导航栏的功能,功能点: 点击定位到指定位置 监听滚动,滚动到指定位置,改变导航颜色 import React, { Component } from 'rea ...

  10. 禁止屏幕滚动-开启屏幕滚动

    禁止屏幕滚动-开启屏幕滚动: // false禁止屏幕滚动 true开启屏幕滚动 function openWindowTouchMove(state) {if(state) {document.bo ...

最新文章

  1. Populating Next Right Pointers in Each Node II
  2. python基础之文件操作,集合,函数
  3. 图卷积神经网络(part7)--PGC
  4. Sublime Text 3插件之Emmet:HTML/CSS代码快速编写神器
  5. Django获取request header信息
  6. win10,Net Share 共享,每次开机都会出现 --- 彻底关闭的方法---禁用server服务
  7. bzoj 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(暴力)
  8. [原创]jQuery的this和$(this)
  9. 构建REST风格的Web Service (转)
  10. 机器学习算法之——卷积神经网络(CNN)原理讲解
  11. JAVA对字符串进行32位MD5加密
  12. 商标注册要的一些重要基本常识(附:注册流程)
  13. 多行文字内容溢出显示点点点(...)省略号
  14. KGB知识图谱帮助金融机构进行风险预判
  15. 安装ie9提示未能完成安装_win10系统安装iE提示“internet Explorer未能完成安装”的方法介绍...
  16. 数说CS|中国人民大学高瓴人工智能学院保研生源大起底!
  17. Selenium自动化测试工具的介绍与使用
  18. PTA天梯赛L1-040 最佳情侣身高差(c语言实现)
  19. 1-3 js基础还是看caicia吧(老师说小游戏)
  20. UOS应用商店安装失败,缺少依赖的问题

热门文章

  1. 芯片附近为什么都放 0.1uF 电容 ?
  2. ORACLE APEX-下载-利用插件
  3. FITC-GSL I荧光素标记的西非单叶豆凝集素 I
  4. Windows安装Git cz (commitizen)
  5. 在overleaf中使用bibtex引用参考文献
  6. Caché 变量大全
  7. 请将文件MP_verify_N8no8dpNO9n7wuBZ.txt上传至XXX指向的web服务器(或虚拟主机)的目录
  8. 用Matlab实现猫变虎简单动画
  9. 潜在语义分析(LSA)
  10. eclipse使用总结