Python Pygame评分-打开和写入文件

Python Pygame评分-打开和写入文件,python,pygame,Python,Pygame,我的游戏有问题,假设游戏中的分数是3,然后我试着写一个高于10的分数。它没有写入我一直试图修复的文件,但它不起作用。。请帮忙。下面只是一段代码 # Variables within loop loop = True over = False # car carx = int(display_w/2 - 20) cary = 500 carwidth = 40 carheight = 70 cxchange = 0 # obstacle obx = carx - carwidth oby = -2

我的游戏有问题,假设游戏中的分数是3,然后我试着写一个高于10的分数。它没有写入我一直试图修复的文件,但它不起作用。。请帮忙。下面只是一段代码

# Variables within loop
loop = True
over = False
# car
carx = int(display_w/2 - 20)
cary = 500
carwidth = 40
carheight = 70
cxchange = 0
# obstacle
obx = carx - carwidth
oby = -200
obwidth = random.randint(200, 450)
obheight = random.randint(100, 200)
obychange = 0
obstacle_speed = 7
# score appending
readhighscore = open("score.txt", "r")
highscore = readhighscore.read()
while loop:
    if over == True:
        message_to_screen("Game over!", black, -200, "large")
        message_to_screen("Final Score: " + str(score), black, -130, "small")
        fire_explosion(carx + int(carwidth / 2), cary)
        if str(score) > str(highscore):
            writehighscore = open("score.txt", "w")
            writehighscore.write(str(score))
        pygame.display.update()
    while over:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                cxchange += 4
            elif event.key == pygame.K_LEFT:
                cxchange -= 4
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                cxchange = 0
            elif event.key == pygame.K_LEFT:
                cxchange = 0
    # Movement
    carx += cxchange
    oby += obychange
    obychange = obstacle_speed
# If Statements
    # end of map and if the car successfully dodges the obstacle
    if carx >= display_w - carwidth:
        carx = display_w - carwidth
    elif carx <= 0:
        carx = 0
    if oby > display_h:
        if score > 16:
            obwidth = random.randint(300, 450)
        else:
            obwidth = random.randint(200, 450)
        obx = carx - random.randint(0, 100)
        oby = random.randint(-1000, -500)
        score += 3
    # obstacle collision with the car
    if oby+obheight >= cary and oby <= cary+carheight:
        if carx+carwidth >= obx and carx <= obx + obwidth:
            over = True
            obychange = 0
    # score concept
    print(highscore)
# Drawing
    # background color
    gameDisplay.fill(white)
    # car
    gameDisplay.blit(car1, [carx, cary])
    # obstacle
    drawobjects(obx, oby, obwidth, obheight, blue)
    # score
    drawScore(score)
    pygame.display.update()
    clock.tick(FPS)
#循环中的变量
循环=真
超过=错误
#汽车
carx=int(带2-20的显示器)
卡里=500
车宽=40
车高=70
cxchange=0
#障碍物
obx=车宽-车宽
oby=-200
obwidth=random.randint(200450)
OBHEIGH=random.randint(100200)
obychange=0
障碍物_速度=7
#分数附加
readhighscore=open(“score.txt”、“r”)
highscore=readhighscore.read()
while循环:
如果超过==真:
屏幕信息(“游戏结束!”,黑色,-200,“大”)
信息至屏幕(“最终分数:+str(分数),黑色,-130,“小”)
火灾爆炸(车内+车内(车宽/2),车内)
如果str(分数)>str(高分):
writehighscore=open(“score.txt”、“w”)
writehighscore.write(str(score))
pygame.display.update()
在结束时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出
elif event.type==pygame.KEYDOWN:
如果event.key==pygame.K_RIGHT:
cxchange+=4
elif event.key==pygame.K_左:
cxchange-=4
elif event.type==pygame.KEYUP:
如果event.key==pygame.K_RIGHT:
cxchange=0
elif event.key==pygame.K_左:
cxchange=0
#运动
carx+=cxchange
oby+=obychange
obychange=障碍物\速度
#如果语句
#地图结束,如果汽车成功避开障碍物
如果carx>=显示\u w-车宽:
carx=显示\u w-车宽
elif carx显示:
如果得分>16分:
obwidth=random.randint(300450)
其他:
obwidth=random.randint(200450)
obx=carx-random.randint(01100)
oby=random.randint(-1000,-500)
分数+=3
#与汽车相撞的障碍物

如果oby+obheight>=cary和oby=obx和carx,那么下面的代码应该可以完全正常工作,尽管我不太确定您会遇到什么问题

with open("score.txt", "w") as f:
    f.write(str(score))
这是我的想法。

编辑:还有很多不必要的代码。阅读,他们的关键词是最小的。

下面的代码应该可以完全正常工作,尽管我不太确定您的问题是什么

with open("score.txt", "w") as f:
    f.write(str(score))
这是我的想法。

编辑:还有很多不必要的代码。阅读,他们的关键词是最小的。

新的Anwser: 对不起,我有一段时间没有活动,但无论如何。。。 问题在于这一点:

if str(score) > str(highscore):

或者,换句话说,您正在比较字符串。用int代替str,你会没事的。在这种情况下,为什么不能在字符串方面做得更好是很复杂的。但是,如果您想要一个解释,请参见以下内容:

newanwser: 对不起,我有一段时间没有活动,但无论如何。。。 问题在于这一点:

if str(score) > str(highscore):

或者,换句话说,您正在比较字符串。用int代替str,你会没事的。在这种情况下,为什么不能在字符串方面做得更好是很复杂的。但是如果你想得到一个解释,请看以下内容:

你到底面临什么问题?分数在10分以上的人不会被写下来吗?看。您应该精简代码,使其只包含与演示您所询问的行为相关的部分。这不仅不会浪费我们的时间,而且你甚至可以自己解决问题,而不需要那些无关紧要的细节。顺便说一句,在打开文件时,你真的应该使用带有
结构的
。是的,分数高于10不会被写入。你到底面临什么问题?分数在10分以上的人不会被写下来吗?看。您应该精简代码,使其只包含与演示您所询问的行为相关的部分。这不仅不会浪费我们的时间,而且你甚至可以自己解决问题,而不需要那些无关紧要的细节。顺便说一句,在打开文件时,您确实应该使用带有
结构的
。是的,分数高于10的不会被写入代码仍然无法工作让我再次解释一下。。如果分数低于字符串“10”,那么假设分数为6,然后如果用户/玩家超过了6的分数,并设置了一个高于10的字符串的新高分,那么python只会忽略它而不编写它。它仍然使用前一个低于10分的分数。代码仍然不起作用,让我再解释一遍。。如果分数低于字符串“10”,那么假设分数为6,然后如果用户/玩家超过了6的分数,并设置了一个高于10的字符串的新高分,那么python只会忽略它而不编写它。它仍然使用前一个低于10分的分数。谢谢你的时间。这节省了我很多时间毫无意义地盯着一行行行code@StrozeR如果我的ANWSER以上或任何答案已经解决了您的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做谢谢你的时间这节省了我很多时间毫无意义地盯着一排排的code@StrozeR如果我的ANWSER以上或任何答案已经解决了您的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做