运行pygame时出现错误,仅在最小化时清除屏幕

时间:2017-10-25 00:48:39

标签: python python-3.x pygame

我正在用pygame构建我的第一个更大的游戏(一个动作角色扮演游戏),当我遇到这个奇怪的bug时才开始。我运行了我的代码,标题屏幕出现了,就像正常一样,然后当我点击它时,它前进,但屏幕不会改变。直到,我最小化窗口。然后屏幕移动。它没有被冻结,因为我将一些打印功能用于调试(这也是我知道它实际上是如何进步的)

我不会把所有的代码,只是可能有问题的部分:

def ChoiceScreen():
    '''choose which option the player wants'''
    print('ChoiceScreen called')
    SURFACE.fill(COLOURS['white'])

    LabelPlay = pg.font.Font('freesansbold.ttf', 32)
    PlaySurf=LabelPlay.render('New Game', True, COLOURS['black'], \
                                               COLOURS['white'])
    PlayRect = PlaySurf.get_rect()
    PlayRect.center = ((WIN_X // 2), (WIN_Y // 2) - 50)
    SURFACE.blit(PlaySurf, PlayRect)

    #################################################################

    LabelLoad = pg.font.Font('freesansbold.ttf', 32)
    LoadSurf=LabelLoad.render('Load Game', True, COLOURS['black'], \
                                               COLOURS['white'])
    LoadRect = LoadSurf.get_rect()
    LoadRect.center = (WIN_X // 2, WIN_Y // 2)
    SURFACE.blit(LoadSurf, LoadRect)

    #################################################################

    LabelLoadEarlier = pg.font.Font('freesansbold.ttf', 32)
    LESurf=LabelLoadEarlier.render('Load Earlier Save', True, COLOURS['black'], \
                                                              COLOURS['white'])
    LERect = LESurf.get_rect()
    LERect.center = (WIN_X // 2, WIN_Y // 2 + 50)
    SURFACE.blit(LESurf, LERect)

    while True:
        for event in pg.event.get():
            if event.type == QUIT:
                terminate()
            elif event.type==MOUSEBUTTONDOWN:
                x, y = event.pos
                if PlayRect.collidepoint(x,y):
                    print("PlayRect Clicked")
                    #more to come
                elif LoadRect.collidepoint(x,y):
                    print("LoadRect Called")
                elif LERect.collidepoint(x,y):
                    print("LERect called")

顺便说一下,COLORS(我是加拿大人)是一个字典,字符串键是RGB元组,WIN_X是800,WIN_Y是600

我使用的IDE是Sublime Text,但是我从命令提示符,IDLE,Double Clicking和visual studio执行它,所有这些都是相同的结果。我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

您没有更新游戏循环中的屏幕(pygame.display.update()