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

Pygame俄罗斯方块双击运行py文件仅显开始菜单后无报错闪退

故障原因
  • 核心触发点:双击运行py文件时,Python的默认工作目录是你执行双击操作所在的文件夹(如果py文件放桌面就是桌面路径),不是py文件自身存放的目录。程序进入主游戏逻辑第一行就调用max_score()读取同目录下的scores.txt,如果对应路径下没有这个文件,会直接抛出文件不存在的错误,程序瞬间退出。双击运行时控制台窗口会随程序同步关闭,你看不到任何报错。而Sublime运行脚本时会自动把py文件所在目录设为工作目录,能正常找到分数文件,所以全程运行无异常。
  • 附带代码逻辑问题:
    • 游戏结束分支里update_score(score)写在了return True之后,属于永远不会执行的死代码,对局结束后最高分不会被保存。
    • 难度递增逻辑写错变量,原本应该调整下落速度fall_speed的判断,错写成了修改level_time,玩多久下落速度都不会提升。
    • 代码里重复写了两次pygame.init(),属于冗余代码,保留全局一次初始化即可。
    • 没有做分数文件的存在性判断,就算在正确目录下运行,第一次启动没有scores.txt也会直接报错闪退。
修复方案
  1. 首先在文件开头导入模块的部分,新增os模块导入,加固定路径逻辑,保证程序不管从什么位置启动,都读取py文件同目录下的分数文件:
import os
import pygame
import sys
import random

# 固定取当前py文件所在目录为基准路径
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
SCORE_FILE = os.path.join(BASE_PATH, 'scores.txt')

# 全局只保留这一次pygame初始化即可,删掉函数中间多余的pygame.init()
pygame.init()
pygame.font.init()
  1. 修改分数读写函数,增加文件不存在时的自动创建逻辑,替换所有硬编码的'scores.txt'为刚才定义的SCORE_FILE:
def max_score():
    # 首次运行没有分数文件时自动创建,初始最高分0
    if not os.path.exists(SCORE_FILE):
        with open(SCORE_FILE, 'w') as f:
            f.write('0')
    with open(SCORE_FILE, 'r') as f:
        score = f.readlines()[0].strip()
    return score

def update_score(nscore):
    score = max_score()
    with open(SCORE_FILE, 'w') as f:
        if int(score) > nscore:
            f.write(str(score))
        else:
            f.write(str(nscore))
  1. 修复游戏结束分支的代码顺序,把分数保存逻辑移到return之前:
if check_lost(locked_positions):
    draw_text_middle(win, "YOU LOST!", 80, (255,255,255))
    pygame.display.update()
    pygame.time.delay(1500)
    update_score(score) # 保存分数要放在return前面才会执行
    return True
  1. 修复难度递增的变量错误:
if level_time/1000 > 5:
    level_time = 0
    if fall_speed > 0.12: # 原来错写为level_time,改为调整下落速度
        fall_speed -= 0.005
  1. 删除代码里valid_space、get_shape函数前多余的两次pygame.init()调用,只保留全局的一次初始化即可。
验证方式

修复完成后,不管是在编辑器里运行,还是直接双击py文件,按任意键都可以正常进入主游戏界面,对局结束后最高分会自动保存,不会出现无理由闪退的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:24:09