7.pyagem-游戏背景
背景交替滚动
游戏启动后,背景图像不断的向下移动
在视觉上产生角色不断向上移动的错觉
游戏背景不断变化,游戏主角的位置报错不变
实现方案
- 创建两张背景图
- 第一张完全和屏幕重合,第二章在屏幕的正上方
- 两种图像一起向下运动,当当前角色的 rect.y>=屏幕高度时,说明已经移动到欧美下方
- 将移动到屏幕下方的这张图像,设置到屏幕的正上方,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)
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)