IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

enregistrer plusieurs variables dans un fichier pour pouvoir les recharger ensuite (sauvegarde de partie)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut enregistrer plusieurs variables dans un fichier pour pouvoir les recharger ensuite (sauvegarde de partie)
    Bonjour à tous,
    comme vous avez certainement pu le lire dans le titre je cherche à sauvegarder des variable car je réalise un projet de jeux de plateau et je souhaite ainsi offrir la possibilité au joueur de sauvegarder une partie pour pouvoir la recharger ensuite, j'utilise le module pickle mais je n'arrive pas à enregistrer toutes les variables de types différent (liste de liste, entier etc...) dans un fichier (pour la sauvegarde) et ensuite pouvoir recharger(charger partie) ce fichier pour pouvoir continuer une partie.

    J'avais pour idée de créer deux fonction différentes simple:
    - sauvegarde de partie
    - chargement de partie

    j'avais fait ça mais cela me renvoie une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _pickle.PicklingError: Can't pickle <class 'tkapp'>: attribute lookup builtins.tkapp failed

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    ## Exemple de données que je souhaite pouvoir sauvegarde puis recharger
    nb=10
    c=60## Tailles des cases d'un damier en 10*10
    x0,y0=0,0
     
    pionsNoirs=[   [0,1],[0,3],[0,5],[0,7],[0,9],
                       [1,0],[1,2],[1,4],[1,6],[1,8],
                       [2,1],[2,3],[2,5],[2,7],[2,9],
                       [3,0],[3,2],[3,4],[3,6],[3,8]]
     
     
    def sauvegarderPartie():
        p=open("f", "w") # le fichier de sauvegarde s'appelle “f”
        pickle.dump((dimension_case, sizeDamier, rangee_pions,damier,nb,c,x0,y0,casesNoires,pionsNoirs,pionsBlancs,casesDamier,provisoireBlancsdroit,provisoireBlancsgauche,provisoireNoirsgauche,provisoireNoirsdroit),p)
        p.close()
     
    def chargerPartie(f):
        p=open(f,"r")
        truc= pickle.load(p)
        placepions()
        p.close()
        return truc
    Si vous avez une idée, un conseil ou autre je suis preneur, je vous remercie d'avance.
    Cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Si tu veux sauvegarder une configuration d'application, commence d'abord par en créer un dictionnaire.
    config = {'dimension_case': xy, 'sizeDamier': yz, 'rangee_pions': etc}

    Ensuite tu pourras dumper ton dictionnaire sans problème.

    D'où sort ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _pickle.PicklingError: Can't pickle <class 'tkapp'>: attribute lookup builtins.tkapp failed
    Jamais vu cette syntaxe.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut
    Je te remercie je vais faire ça tout de suite.
    Cependant à quoi correspond les xy ou encore xz dans ton dictionnaire je n'ai fait que très peu de dictionnaire et ne comprend donc pas cette notation.
    Quant au message d'erreur c'est celui que j'ai obtenu après avoir utilisé la fonction sauvegarderPartie dans mon précédent message.

    Cordialement.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut
    Après avoir réussis à écrire dans le fichier puis l'avoir lu je n'arrive pas à réutiliser les donnée dans les variables.
    je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    config = {'dimension_case', 'sizeDamier', 'rangee_pions','damier','nb','c','x0','y0','casesNoires','pionsNoirs','pionsBlancs','casesDamier','provisoireBlancsdroit','provisoireBlancsgauche','provisoireNoirsgauche','provisoireNoirsdroit'}
     
     
    def sauvegarderPartie():
        p=open("fichierSauvegarde.txt", "wb") # le fichier de sauvegarde s'appelle “fichiersauvegarde”
        pickle.dump(config,p) # Je dump le dico config 
        print(config) # je print config qui  me renvoie un dico de string
        p.close()
     
    def chargerPartie():
        p=open("fichierSauvegarde.txt","rb") 
        truc= pickle.load(p)
        print(config) # Le dico config est printé 
        placepions() # je refait le placement des pions avec les valeurs des variables enregistrés
        p.close()
     
        return truc

    Voila comme tu dois le voir mon placement de pions ne fait absolument rien et ne change rien sur mon plateau de jeu, cela vient il du fait que ce sont des strings ?

    Si tu pouvais m'expliquer comment faire pour récupérer les valeurs des variables enregistrés dans le dico à un moment donné.

    Si je me suis mal exprimé n'hésites surtout pas

  5. #5
    Membre éprouvé Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Par défaut
    C'est normal, une fois que tu as récupéré le contenu de pickle.load dans truc, tu dois donner truc à placepions, sinon comment cette fonction est sensée connaitre le contenu de truc.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut
    Qu'entends tu par donner truc à pions en code ça signifie quoi je n'arrive pas à visualiser ce que tu m'explique, je comprend l'idée mais ne vois pas la manière.

Discussions similaires

  1. [XL-2010] Afficher des données cellules dans une textbox et pouvoir les modifier ensuite
    Par chiken samada dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/02/2015, 11h11
  2. Remplacer plusieurs variables dans un fichiers
    Par waouni dans le forum Linux
    Réponses: 2
    Dernier message: 22/03/2012, 13h51
  3. Réponses: 1
    Dernier message: 07/06/2011, 13h26
  4. Enregistrer une variable dans un fichier texte
    Par xunil2003 dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2009, 15h59
  5. Réponses: 5
    Dernier message: 07/09/2006, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo