You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame贪吃蛇代码报错'int' object is not subscriptable求助

问题修复方案

核心报错原因

触发TypeError: 'int' object is not subscriptable的直接原因是snake_body初始化格式错误:
你原代码中snake_body的初始值为一维列表[100, 50],存储的是两个独立整数。遍历snake_body时取出的pos是100、50这类整数,自然无法使用pos[0]/pos[1]的下标访问语法。
正确的snake_body应该是嵌套列表,每个元素对应蛇身一块的坐标,初始蛇身只有1块,修改初始化代码即可:

# 修改前
# snake_body = [100, 50]
# 修改后
snake_body = [[100, 50]]

其他潜在问题修复

修改完上述代码后还存在两处逻辑错误,会导致游戏运行异常:

  1. 蛇身自碰撞检测逻辑错误
    原代码的自碰撞判断写错了y坐标的匹配规则,会出现误判/漏判,修改为:
# 修改前
# if snake_position[0] == block[0] and snake_position[0] == block[1]:
# 修改后
if snake_position[0] == block[0] and snake_position[1] == block[1]:
  1. 窗口关闭事件判断位置错误
    原代码把关闭窗口的判断放在了事件遍历循环外,只会检测最后一个事件的状态,可能出现点关闭按钮无响应的问题,把这段逻辑移到事件遍历循环内部:
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        # 原有按键判断逻辑保留

内容的提问来源于stack exchange,提问作者Yumgi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:54:04