Pygame开发太空入侵者游戏出现int类不支持[]运算符报错如何解决
报错原因及解决方案
Class 'int' does not define 'getitem', so the '[]' operator cannot be used on its instances
该报错的核心是你误将原本为列表类型的变量覆盖为了整数类型,后续代码尝试对整数执行[]索引操作,而整数类型本身不支持该操作,所以触发异常。
需修改的两处错误
- 碰撞逻辑错误覆盖列表变量
你初始化时enemyX、enemyY为存储所有敌人坐标的列表,但在碰撞触发的代码中,你直接对全局的enemyX、enemyY赋值为单个随机整数:
# 错误写法 enemyX = random.randint(0, 735) enemyY = random.randint(0, 150)
应该修改为仅更新触发碰撞的第i个敌人的坐标:
# 正确写法 enemyX[i] = random.randint(0, 735) enemyY[i] = random.randint(50, 150)
- 列表直接做加法运算逻辑错误
你在游戏循环全局位置写了enemyX += enemyX_change,enemyX和enemyX_change都是列表,不能直接整体相加更新。将这行代码删除,移动到敌人遍历循环内部:
for i in range(num_of_enemies): # 新增敌人坐标更新代码 enemyX[i] += enemyX_change[i] # 原有判断敌人边界的代码不变 if enemyX[i] <= enemyMinPosition[i]: ...
修改完上述两处问题后,报错就会消失,游戏可以正常运行。
内容的提问来源于stack exchange,提问作者Breno Aguirres
相关产品推荐
相关产品推荐

