Файл написан только в конце моей программы - PullRequest
1 голос
/ 25 января 2020

Я создаю игру в Python с pygame, и мне нужно обновить мой файл, когда я обновляю свой дисплей pygame. Но когда я пытаюсь написать его, он пишется только в конце моей программы.

Класс, в который я пытаюсь записать файл

class GameReader():

    def __init__(self):

        self.file_content = [
            {'last_edit': 0},
            {
                'map_infos': {
                    'p1': 0,
                    'p2': 0,
                    'p3': 0,
                    'p4': 0,
                    'p5': 0,
                    'p6': 0,
                    'p7': 0,
                    'p8': 5
                }
            }
        ]

        self.update_file()

    def update_file(self):
        with open('gameFiles/game.yaml', 'w') as file:
            yaml.dump(self.file_content, file)
            file.close()

Экземпляр GameReader() сохраняется в классе Game()

while running:

    # ajout du menu
    screen.blit(game.menu.image, game.menu.rect)

    # ajout du boutton de départ
    screen.blit(game.start_btn.image, game.start_btn.rect)

    # update
    pygame.display.flip()

    # update de la game file
    game.game_reader.update_file()

    # recuperer les events
    for event in pygame.event.get():

        # si fermeture de fenetre
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()

Ответы [ 2 ]

0 голосов
/ 25 января 2020
def update_file(self):
        with open('gameFiles/game.yaml', 'w') as file:
            yaml.dump(self.file_content, file)
            file.flush()
            file.close()
0 голосов
/ 25 января 2020

Файлы записываются через буфер, поэтому вам нужно грипп sh это.

file.flush()
...