Pygame Zero代码报错:第15行if语句后缺少缩进块
报错原因
Python是强制缩进语法的语言,if、else、def这类需要挂载代码块的语句,其下属的执行逻辑必须比语句本身多一层统一缩进(标准规范为4个空格),解释器才能识别代码块的从属关系。
你的代码中if apple.collidepoint(pos):语句下的print("Good Shot!")、place_apple()两行逻辑没有做缩进处理,解释器找不到if语句对应的执行块,同时未缩进的代码后直接接else语句会产生语法冲突,因此抛出该缩进错误。
另外你代码里的//Importing是C/Java系语言的注释写法,Python不支持这种注释格式,直接写也会触发语法错误,Python的单行注释需要以#开头。
修复方案
将if分支下需要执行的两行代码统一增加一层缩进,和else分支下的执行代码保持相同缩进层级;修正错误的注释格式;补全游戏启动必要的初始化逻辑即可。
修复后可运行完整代码
# 导入依赖 from random import randint import pgzrun # 初始化苹果角色 apple = Actor("apple") def draw(): screen.clear() apple.draw() def place_apple(): # 随机生成苹果坐标 apple.x = randint(10, 800) apple.y = randint(10, 600) def on_mouse_down(pos): if apple.collidepoint(pos): # 命中苹果时的逻辑,属于if块必须缩进 print("Good Shot!") place_apple() else: # 未命中苹果时的逻辑,属于else块必须缩进 print("You Missed!") quit() # 游戏启动时先放置第一个苹果 place_apple() # 启动游戏主循环,Mu编辑器的Pygame Zero模式下可省略该行 pgzrun.go()
注意事项
- 编写Python代码时全文件缩进规则要统一,不要混用Tab和空格,否则很容易触发缩进相关报错
- 提前将苹果图片素材命名为
apple.png,放在和代码文件同级的目录下,否则会出现资源加载错误 - 如果使用Mu编辑器的Pygame Zero专属运行模式,可以删掉代码里的
import pgzrun和pgzrun.go()两行,编辑器会自动处理启动逻辑
内容的提问来源于stack exchange,提问作者win10 kimo
相关产品推荐
相关产品推荐

