Python, sauvegarde des données au format JSON

Résolu/Fermé
Paul - Modifié le 20 janv. 2022 à 19:49
 Paul - 20 janv. 2022 à 19:58
Bonjour,

J'ai créé un programme python permettant de jouer au domino. Et voici ce que je dois mettre en place: Donner la possibilité d’interrompre la partie pour pouvoir y revenir plus tard. On pourra stocker les données au format JSON et les recharger lors du prochain lancement du programme.

J'ai alors cherché comment enregistrer les données de mon dictionnaire mais je n'y arrive pas. Voici ma fonction main : (PS: mon problème est au début et à la fin)

def main():
    
# partie permettant la récupération des 
   données de jeu, mais non fonctionnelle

    with open('data.json', 'r') as fp:          
        game_data = json.load(fp)                

# En gros si l'un des éléments du dico
    récupéré est vide alors je mets en place
    les paramètres, dans le cas contraire
    le programme passe directement au while
    

    if game_data['board'] == []:                  
        nb_player = nb_players()                    
        list_player = pseudo_players(nb_player)    
        for pseudo in list_player:                                
            game_data['players'][pseudo] = []             
    
        init_game(game_data, list_player)
        display_stack(game_data)
        for pseudo in list_player:
            display_dominoes(game_data, pseudo)
        display_board(game_data)
        start_info = who_start(nb_player, list_player, game_data)
        player_start = start_info[0]
        first_domino = start_info[1]
        list_player.remove(player_start)
        list_player.insert(0, player_start)
    
    flag = False
    while flag is False:
        for pseudo in list_player:
            print(f"*** Joueur {pseudo} ***")
            domino = choose_domino(game_data['players'][pseudo], game_data, first_domino)
            if domino is None:
                if game_data['stack'] == []:
                    print("Pioche vide, passe son tour")
                else:
                    dominoes_taken = take_dominoes(game_data['stack'], 1)
                    give_dominoes(game_data, dominoes_taken, pseudo)
            else:
                board = game_data['board']
                if board != []:
                    position = choose_board_position()
                    if is_domino_possible(game_data['board'], domino, position) is True:
                        play_domino_on_board(game_data, domino, position, pseudo)
                    else:
                        print("Wrong position ! Take a card !")
                        dominoes_taken = take_dominoes(game_data['stack'], 1)
                        give_dominoes(game_data, dominoes_taken, pseudo)
                else:
                    play_domino_on_board(game_data, domino, 'd', player_start)
                   
                
            display_dominoes(game_data, pseudo)
            display_board(game_data)

        for player in game_data['players'].keys():
            if has_player_won(game_data, player) is True:
                result = print(f"{player} won the Game !")
                flag = True
                return result
            
        if is_game_frozen(game_data) is True:
            result = print(f"{player_with_min_dominoes(game_data)} won the game)")
            flag = True
            return result

# partie permettant l'enregistrement  
des données 
       
game_stop = input("If you want to stop the game for the moment or not, scribe : Yes or No : ")
        if game_stop == 'Yes':
            with open('data.json', 'w') as fp:       
                json.dump(game_data, fp)                
            sys.exit("See you next time")


main()


De plus, je ne sais si il faut que je crée un fichier JSON à l'origine avec un dictionnaire vide. Et est il possible de créer une fonction qui permettrait de remettre à 0 le fichier JSON si le jeu est fini. Merci d'avance. (PS: les indentations ne se mettent pas mais elles sont présentes sur mon programme.
A voir également:

2 réponses

jee pee Messages postés 40458 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 novembre 2024 9 420
20 janv. 2022 à 19:49
Bonjour,

Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (C, Python, Shell, ...).

Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

J'ai modifié ta question.
0
Merci, je ne savais pas
0