Python / Pygame - if语句与.txt文件有关

时间:2013-11-05 02:52:43

标签: python if-statement pygame

我有一个if语句,检查.txt文件的某一行是否==“true”,但它似乎没有正常工作..这里:

configfile=open("FirstGameConfig.txt")
config_lines=configfile.readlines()
speed_of_object=float(config_lines[5])
acceleration_of_object=float(config_lines[7])
show_coordinates=str(config_lines[9]) #####
acceleration_mode=str(config_lines[11])
configfile.close()

这一切都是最重要的,show_coordinates字符串似乎在这里行为不端:

font=pygame.font.Font(None, 40)
    if acceleration_mode=="true":
        speedblit=font.render("Speed:", True, activeblitcolor)
        screen.blit(speedblit, [0, 0])
        rectyspeedtext=font.render(str(abs(rectyspeed)), True, activeblitcolor)
        screen.blit(rectyspeedtext, [100, 0])
    if show_coordinates=="true":
        rectycoord=font.render(str(recty), True, activeblitcolor)
        screen.blit(rectycoord, [360, 570])
        rectxcoord=font.render(str(rectx), True, activeblitcolor)
        screen.blit(rectxcoord, [217, 570])
        coordblit=font.render("Coordinates: x=              y=", True, activeblitcolor)
        screen.blit(coordblit, [0, 570])

脚本检查加速模式是否打开。如果acceleration_mode的值为true,则对象的速度将打印在屏幕的左上角。 activeblitcolor已经定义,所以没问题。 if show_coordinates语句下的内容将打印屏幕左下角对象的坐标,假设我的.txt文件中的值为“true”。

所以问题是即使show.coordinates在.txt文件中设置为true,也会跳过此语句。 acceleration_mode也在.txt文件中,它完美地运行。如果检查acceleration_mode是否为true的语句完全正常,为什么show_coordinates的语句不能正常工作?如果我删除if语句但保留脚本中的代码,那么坐标DO将打印在屏幕的左下角,就像它们应该是show_coordinates ==“true”一样。

我肯定在.txt文件中的正确行上有“true”。如果我添加“print(show_coordinates)”,则输出“true”。该脚本识别show_coordinates的值为true,但if语句不是?任何帮助,将不胜感激!我是初学者。

1 个答案:

答案 0 :(得分:1)

readlines方法将换行符留在行的末尾。我怀疑你的文件最后没有换行符,acceleration_mode是最后一行,这就是为什么有效。

要验证我的怀疑,请添加

print(repr(show_coordinates))

甚至

print(config_lines)

您可能会看到show_coordinates看起来像'true\n'

要解决此问题,您可以添加对strip()的调用以清理字符串。 E.g:

show_coordinates = config_lines[9].strip()
acceleration_mode = config_lines[11].strip()