背景交替滚动
游戏启动后,背景图像不断的向下移动
在视觉上产生角色不断向上移动的错觉
游戏背景不断变化,游戏主角的位置报错不变
 
实现方案
  1. 创建两张背景图
  2. 第一张完全和屏幕重合,第二章在屏幕的正上方
  3. 两种图像一起向下运动,当当前角色的 rect.y>=屏幕高度时,说明已经移动到欧美下方
  4. 将移动到屏幕下方的这张图像,设置到屏幕的正上方,rect.y = -rect.height,以此循环
 
设计背景类

"""游戏背景精灵""" class Background(GameSprite): def update(self):
# 调用父类的update方法实现移动
super().update()
# 重写父类update方法,判断是否移出屏幕
if self.rect.y >= SCREEN_RECT.height:
#如果移出屏幕,将图像设置到屏幕上方
self.rect.y = -self.rect.height
 
背景图像的交替实现
#plane_main.py

# 私有方法-创建精灵、精灵组
def __create_sprites(self):
# 创建两个背景精灵
background_1 = Background('./images/background.png', 1)
background_2 = Background('./images/background.png', 1)
# 将第二个背景精灵的y值设置为图片的高度
background_2.rect.y = background_2.rect.height
# 将背景精灵加入精灵组,实现循环滚动
self.back_group = pygame.sprite.Group(background_1,background_2) # 私有方法-更新精灵组
def __update_sprites(self):
self.back_group.update() # 更新精灵组所有精灵
self.back_group.draw(self.screen) # 绘制精灵组图像
 
利用初始化方法,简化背景精灵的创建
"""游戏背景精灵""" class Background(GameSprite): def __init__(self, is_alt=False): # 调用父类方法,完成精灵的创建 super().__init__('./images/background.png', 1) # is_alt字段判断是否是交替图像,如果是,需要设置初始位置 if is_alt: self.rect.y = -self.rect.height def update(self): # 调用父类的update方法实现移动 super().update() # 重写父类update方法,判断是否移出屏幕 if self.rect.y >= SCREEN_RECT.height: # 如果移出屏幕,将图像设置到屏幕上方 self.rect.y = -self.rect.height
class Background(GameSprite):

    def __init__(self, is_alt=False):
# 调用父类方法,完成精灵的创建 super().__init__('./images/background.png', 1) # is_alt字段判断是否是交替图像,如果是,需要设置初始位置
if is_alt:
self.rect.y = -self.rect.height
    # 私有方法-创建精灵、精灵组
def __create_sprites(self):
# 创建两个背景精灵加入精灵组,实现循环滚动
background_1 = Background()
background_2 = Background(True) # 设置True表示交替背景,设置位置
self.back_group = pygame.sprite.Group(background_1,background_2)
 

最新文章

  1. js 闭包演示
  2. hdfs 机架感知和复制因子的设置
  3. HTTP Pipeline
  4. DOM对象与JQUERY对象的相互转化
  5. apache https配置步骤
  6. [STL]heap和priority_queue
  7. android中的Cursor类
  8. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途
  9. Effective Java2读书笔记-类和接口(五)
  10. 基于visual Studio2013解决C语言竞赛题之1076放鞭炮
  11. linkin大话面向对象--接口
  12. linux虚拟机中安装mongodb
  13. hdu 5893 (树链剖分+合并)
  14. Amazon新一代云端关系数据库Aurora(上)
  15. N元模型
  16. Springboot配置多数据源(Mysql和Orcale)--(Idea Maven JDBCTemplate支持下的)
  17. ST表学习笔记
  18. oracle 11 g release 2 卸载
  19. kubernetes的CI/CD
  20. pro2

热门文章

  1. scratch制作彩虹猫病毒模拟器
  2. 聊天机器人框架Rasa资源整理
  3. 内网技巧-通过SAM数据库获得本地用户hash的方法
  4. KingbaseES 并行查询
  5. git stash总结
  6. ELK接收paloalto防火墙威胁日志并定位城市展示
  7. 对表白墙wxml文件解释
  8. H5页面调用admob激励视频,用户获取奖励
  9. 头文件与main函数
  10. 【debug】 Linux中top的使用