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

Pygame战舰游戏:点击网格外崩溃问题的解决方法

问题解决:点击网格外导致Pygame游戏报错终止

问题原因

你的GRID是10×10的二维列表,索引范围仅为0到9。当点击网格外区域时,计算出的ROW或COLUMN会超出这个范围(比如点击屏幕下方时,ROW会等于10甚至更大),直接访问GRID[ROW][COLUMN]会触发索引越界错误,导致游戏直接终止。

修复代码

修改游戏主循环中处理鼠标点击的逻辑,添加范围判断,仅处理网格内的有效点击:

while PLAYING == True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

        if event.type == pygame.MOUSEBUTTONDOWN:
            POS = pygame.mouse.get_pos()
            COLUMN = POS[0] // (GRIDWIDTH + MARGIN)
            ROW = POS[1] // (GRIDHEIGHT + MARGIN)
            # 仅处理网格范围内的点击
            if 0 <= ROW < 10 and 0 <= COLUMN < 10:
                GRID[ROW][COLUMN] = 1
                draw_grid()

    FPSCLOCK.tick(FPS)
    pygame.display.update()

额外优化建议

  • 可以给网格外的点击添加反馈(比如不执行任何操作,或者在控制台打印提示),让玩家明确知道点击无效
  • 后续添加船只随机放置逻辑时,同样需要确保船只位置不会超出网格范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:40:13