修复Pygame中仅普通仙人掌移出屏幕时增加得分的问题
修复仙人掌移出屏幕得分逻辑问题
问题根源
原代码仅对普通仙人掌的移出事件做了得分判断,遗漏了大型仙人掌的检测逻辑,导致只有普通仙人掌移出时才加分。
修复方案
移除得分判断中的仙人掌类型限制,统一检测所有仙人掌是否移出屏幕,同时确保遍历列表时避免修改原列表引发的错误。
修复后的核心代码
# 游戏主循环/更新函数中的仙人掌移出检测逻辑 for cactus in cacti_list[:]: # 用列表切片创建副本,避免遍历中修改原列表报错 # 移除类型判断,只要仙人掌完全移出屏幕左侧就加分 if cactus.x < -cactus.width: score += 1 cacti_list.remove(cactus)
确保仙人掌生成函数的兼容性
create_random_cactus() 生成的两种仙人掌需包含统一的属性(x、width),保证检测逻辑能通用:
import random SCREEN_WIDTH = 800 # 示例屏幕宽度 def create_random_cactus(): cactus_type = random.choice(["normal", "large"]) if cactus_type == "normal": return { "type": "normal", "x": SCREEN_WIDTH, "width": 40, "height": 60 } else: return { "type": "large", "x": SCREEN_WIDTH, "width": 60, "height": 80 }
预期效果
- 普通仙人掌完全移出屏幕左侧时,游戏得分+1
- 大型仙人掌完全移出屏幕左侧时,游戏得分+1
- 两种仙人掌的得分触发逻辑完全一致,无遗漏情况
内容的提问来源于stack exchange,提问作者Beanss
相关产品推荐
相关产品推荐

