游戏背景 黑马程序员《Python入门教程完整版》笔记

— 黑马程序员《Python入门教程完整版》笔记

目标背景交替滚动的思路确定

显示游戏背景

01. 背景交替滚动的思路确定

运行 备课代码,观察 背景图像的显示效果:游戏启动后,背景图像 会 连续不断地 向下方 移动

在 视觉上 产生英雄的飞机不断向上方飞行的 错觉 —— 在很多跑酷类游戏中常用的套路游戏的背景 不断变化

游戏的主角 位置保持不变

1.1 实现思路分析

解决办法创建两张背景图像精灵第 1 张 完全和屏幕重合

第 2 张在 屏幕的正上方

两张图像 一起向下方运动self.rect.y += self.speed

当 任意背景精灵 的 rect.y >= 屏幕的高度 说明已经 移动到屏幕下方

将 移动到屏幕下方的这张图像 设置到 屏幕的正上方rect.y = -rect.height

1.2 设计背景类

初始化方法直接指定 背景图片

is_alt 判断是否是另一张图像False 表示 第一张图像,需要与屏幕重合

True 表示 另一张图像,在屏幕的正上方

update() 方法判断 是否移动出屏幕,如果是,将图像设置到 屏幕的正上方,从而实现 交替滚动继承 如果父类提供的方法,不能满足子类的需求:派生一个子类

在子类中针对特有的需求,重写父类方法,并且进行扩展

02. 显示游戏背景

2.1 背景精灵的基本实现在 plane_sprites 新建 Background 继承自 GameSpriteclass Background(GameSprite):

"""游戏背景精灵"""

def update(self):

# 1. 调用父类的方法实现

super().update()

# 2. 判断是否移出屏幕,如果移出屏幕,将图像设置到屏幕的上方

if self.rect.y >= SCREEN_RECT.height:

self.rect.y = -self.rect.height

2.2 在 plane_main.py 中显示背景精灵在 __create_sprites 方法中创建 精灵 和 精灵组

在 __update_sprites 方法中,让 精灵组 调用 update() 和 draw() 方法__create_sprites 方法def __create_sprites(self):

# 创建背景精灵和精灵组

bg1 = Background("./images/background.png")

bg2 = Background("./images/background.png")

bg2.rect.y = -bg2.rect.height

self.back_group = pygame.sprite.Group(bg1, bg2)__update_sprites 方法def __update_sprites(self):

self.back_group.update()

self.back_group.draw(self.screen)

2.3 利用初始化方法,简化背景精灵创建思考 —— 上一小结完成的代码存在什么样的问题?能否简化?在主程序中,创建的两个背景精灵,传入了相同的图像文件路径

创建 第二个 背景精灵 时,在主程序中,设置背景精灵的图像位置思考 —— 精灵 初始位置 的设置,应该 由主程序负责?还是 由精灵自己负责?

答案 —— 由精灵自己负责根据面向对象设计原则,应该将对象的职责,封装到类的代码内部

尽量简化程序调用一方的代码调用

初始化方法直接指定 背景图片

is_alt 判断是否是另一张图像False 表示 第一张图像,需要与屏幕重合

True 表示 另一张图像,在屏幕的正上方

在 plane_sprites.py 中实现 Background 的 初始化方法def __init__(self, is_alt=False):

image_name = "./images/background.png"

super().__init__(image_name)

# 判断是否交替图片,如果是,将图片设置到屏幕顶部

if is_alt:

self.rect.y = -self.rect.height修改 plane_main 的 __create_sprites 方法# 创建背景精灵和精灵组

bg1 = Background()

bg2 = Background(True)

self.back_group = pygame.sprite.Group(bg1, bg2)

python设计游戏的背景_04_游戏背景 — 黑马程序员《Python入门教程完整版》笔记...相关推荐

  1. 黑马程序员 python 基础版 哪个老师_(看黑马程序员Python基础班视频挺好,犹豫该不该报班?)...

    看黑马程序员Python基础班视频挺好,犹豫该不该报班? 如果看视频比较好的话,还是建议自学吧,毕竟录制视频的老师不一定参与实质的讲课,且能自学也省一笔培训费用了.我是看的bilibili上黑马程序员 ...

  2. 黑马程序员Flutter入门教程之项目初步创建

    使用vscode创建 1.安装vscode 2.vscode中安装插件 在扩展面板输入flutter和dart,进行下载安装,安装完成重启生效 3.创建项目 快捷键ctrl+shift+P,选择flu ...

  3. 黑马程序员Python教程的代码--摆放游戏

    把黑马程序员Python教程的代码跟着老师打了一遍,供大家参考学习. 可直接粘贴以下代码学习,对应课程380-384节 class HouseItem:def __init__(self,name,a ...

  4. python视频教程黑马-python视频教程免费:求黑马程序员python教程?

    python后端开发需要学什么? 第一阶段:Python语言基础 主习Python最基识,如Python3.数据类型.字符串.函数.类件操作等.阶段课程结束后,学员需要完成Pygame实战飞机大战.2 ...

  5. 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案

    前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ +  ...

  6. [学习笔记]黑马程序员python教程

    文章目录 思维导图 Python基础知识图谱 面向对象 SQL入门和实战 Python高阶技巧 第一阶段 第九章:Python异常.模块与包 1.9.1异常的捕获 1.9.1.1 为什么要捕获异常 1 ...

  7. python从入门到高阶(基于黑马程序员python教程)

    文章目录 0.文章来源 1."学it就来%s%s员"% (name,"程序员") 2.%s:占位字符串.%d:占位整型.%f:占位浮点型 3.字符串格式化的精度 ...

  8. python3入门与进阶笔记_16_变量进阶 — 黑马程序员《Python入门教程完整版》笔记...

    变量进阶(理解) - 黑马程序员<Python入门教程完整版>笔记 目标变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用变量 和 数据 都是保存在 内存 中的 在 Py ...

  9. python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...

    不过小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今天又给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,小编该给大家介绍一下这套教程了,希望每个小伙伴都沉迷学习, ...

最新文章

  1. weblogic配置文件学习总结
  2. python - socket模块1
  3. web编程 模块1 html,PYcore python programming笔记C20 Web编程
  4. 【LeetCode笔记】49. 字母异位词分组(Java、字符串、哈希表)
  5. 深入C++面试题总结
  6. 有没有用过苹果手机的人,使用后放弃苹果
  7. 《大道至简》第一章读后感(java伪代码)
  8. 域控制器的常规卸载,Active Directory系列之十三
  9. 2019.07.23--运用三W法则初步学习SpringCloud基础知识
  10. 数学:AI和大数据的基础
  11. MDCC2013会议笔记
  12. 配置系统初始化失败0 x84b10001当在Windows上安装SQL Server
  13. 检测心率的体重心率秤方案开发
  14. 202130310164
  15. 互联网IT 校招与内推:软实力的技巧
  16. Mac 下 Nginx、PHP、MySQL 和 PHP-fpm 的安装和配置
  17. FPGA_demo2:按键测试
  18. react + antd pro 项目搭建及发布流程
  19. 设置静态IP后 mtputty无法连接问题
  20. [課程筆記] 機器學習2021(李弘毅) L32.概述增強式學習(四)

热门文章

  1. 在Windows环境下部署SVN服务器
  2. hadoop启动主机名解析错误解决
  3. lua服务执行过程中协程的挂起和重新唤醒
  4. hive over窗口函数的使用
  5. 海店湾:创造101孟美岐仿妆教程,这个夏天最值得pick的少女妆!
  6. 阿里巴巴服务端高并发分布式架构演进之路
  7. Spring之拦截器
  8. 余额支付风控--整体篇
  9. 【华为机试真题Java】5键键盘的输出
  10. 事务管理--(Spring两种方式)