(1) 2 »


Sauvegarde dans un fichier. Script en fin de page
OverdOzed
Inscrit:
12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
Je ne savais pas dans quelle partie le mettre (python, Bge ou autre) donc je l'ai mis dans les questions reponse.

Ca serait pour sauvegarder dans un fichier la position de mon personnage.
J'ai créer ce script a partir d'un ancien fichier que j'aavais trouver sur le net, mais il fonctionnait sous 2.4, donc impossible de l'utiliser sur la 2.5!
Voici ce que j'ai fait :

Sauvegarde :

from bge import logic as gl


cube = ["Cube"]
cubePosi = cube.getPosition()
cubeRot = cube.getOrientation()


gl.saveGlobalDict = open("Game1.sav", "w")


gl.saveGlobalDict.write ("This is a valid save file\n")


for x in range(len(cubePosi)):
	gl.saveGlobalDict.write(str(cubePosi[x]) + "\n")
for x in range(len(cubeRot)):
	for y in range(len(cubeRot[x])):
		gl.saveGlobalDict.write(str(cubeRot[x][y]) + "\n")


gl.saveGlobalDict.close()


Chargement:
from bge import logic as gl


cube = ["Cube"]
cubePosi = cube.getdPosition()
cubeRot = cube.getOrientation()


gl.loadGlobalDict()) = open("Game1.sav", "r")


header = loadGlobalDict.readline()
header = header[0:-1]

if header == "This is a valid save file":


	for x in range(len(cubePosi)):
		loadCoord = gl.loadGlobalDict.readline()
		cubePosi[x] = float(loadCoord[0:-1])
	cube.setPosition(cubePosi)
	for x in range(len(cubeRot)):
		for y in range(len(cubeRot[x])):
			loadCoord = gl.loadGlobalDict.readline()
			cubeRot[x][y] = float(loadCoord[0:-1])
			cube.setOrientation(cubeRot)


gl.loadGlobalDict.close()


Il est possible qu'il y ai des chose qui n'existent pas dans mon script car je ne connais pas toutes les fonctions en pyhon (enfin j'en connais pas plutot )

Merci d'avance.


[EDIT]: désolé, toute la mise en page a disparue (les tabulations)

Contribution le : 31/08/2011 12:16
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
Ze Grand Manitou
Inscrit:
24/07/2003 14:50
De la Région Parisienne
Post(s): 21822
Citation :

jimmydu54 a écrit:
[EDIT]: désolé, toute la mise en page a disparue (les tabulations)


C'est à cela que sert la balise CODE.

@+

Contribution le : 31/08/2011 12:39
_________________

Mickaël Guédon | Site pro : www.mickaelguedon.com | Fondateur du Blender Clan : www.blenderclan.org
Auteur de Formations Blender chez Elephorm
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
un petit

C'est la reprise des cours, et disons que je vais avoir d'autres langages de programmation a apprendre que le python.
Mais je vais tout de même essayer de rendre utilisable ce script qui pourrais en aider plus d'un.

Une fois ce script corriger, j'éssayeré d'ajouter une fonction de sauvegarde de propriété car la il retient juste la postion et l'orientation de l'objet (enfin même ça il le fait pas ).

Contribution le : 01/09/2011 19:14
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
24/07/2008 00:45
De Paris
Post(s): 3445
Le script fonctionne-t-il ?
Si non, quelle sont les erreurs données par la console ?
Commence par ça, tu pourras au moins t'aider tout seul.
Et je crois pas que le globalDict fonctionne si on coupe Blender et qu'on le redémarre, encore que je ne l'ai jamais utilisé.
Préfère un système basé sur un fichier et utilise le module Pickle qui est fait pour.
En recherchant, tu pourras peut-être trouver dans les archives du fofo un équivalent plus poussé fait par je-ne-sais-plus qui (peut-être Map, mais je ne suis vraiment pas sûr).

Contribution le : 01/09/2011 21:13
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
Merci bobibou.
Et pour le saveGlobelDict et bien disons que sur la doc officielle, ils disent que ça sauvegarde dans un fichier :

bge.logic.loadGlobalDict()¶
Description:Loads bge.logic.globalDict from a file.

bge.logic.saveGlobalDict()¶
Description:Saves bge.logic.globalDict to a file.

Mais comme tu l'as dit, il n'est pas certain que ce fichier soit encore la a la fermeture de blender.

Je vais voir ce que je peut faire avec pickle.

Contribution le : 02/09/2011 09:35
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
24/07/2008 00:45
De Paris
Post(s): 3445
Bon, si la doc le dit, je m'incline.
L'avantage du fichier, c'est que tu peux en faire plusieurs, que tu sais où ils sont, comment ils fonctionnent et que ça devrait fonctionner aussi une fois exporté en runtime.

Contribution le : 02/09/2011 11:41
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
Ouaiiiiiii après m'être acharné sur mon script qui marchai pas, je l'ai recommencer, j'ai recréer mon fichier sauvegarde.sav et la je me suis rendu compte que mon fichier était en lecture seule, donc j'ai passé un bon bout de temps coincer non pas a cause du script mais d'un fichier!!!

Pour ceux qui veulent voici le code:

Créer un fichier nommé "sauvegarde.sav" et vérifier qu'il n'est pas en lecture seule.

Chargement:

from bge import logic as gl

#On récupère la scène courante ainsi que l'objet activant le script
cont=gl.getCurrentController()
scene=gl.getCurrentScene().objects
own=cont.owner

#On ouvre le fichier de sauvegarde (r=lecture)

fichier=open("sauvegarde.sav","r")

#On crée une liste nommée coordonnée
coordonnee=[]

#Chaque element de coordonnee est egal au contenu de fichier (separé par ":")
coordonnee=fichier.read().split(":")

# On assigne la position a l'objet courant
own.position[0]=float(coordonnee[0])
own.position[1]=float(coordonnee[1])
own.position[2]=float(coordonnee[2])

# On ferme fichier
fichier.close()


Sauvegarde:
from bge import logic as gl

#On récupère la scène courante ainsi que l'objet activant le script
cont = gl.getCurrentController()
scene = gl.getCurrentScene().objects
own = cont.owner

# On ouvre le fichier en supprimant les anciennes données (w=ouverture pour écriture en écrasant les anciennes données. Si vous ne voulez pas les effacées, mettez "a" a la place mais il vous faudra alors modifier le code.)
fichier = open("sauvegarde.sav", "w")

# On y inscrit la position x, y et z de l'objet courant (transformer en chaine de caractere)
fichier.write( str(own.position[0]) + ":" + str(ownown.position[1]) + ":" + str(ownown.position[2]) )

# On ferme le fichier
fichier.close()


Les propriétés vont bientôt être ajoutée

Bon blend et bonne reprise pour ceux qui sont encore dans le système scolaire.

Contribution le : 03/09/2011 20:04
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
24/07/2008 00:45
De Paris
Post(s): 3445
Avec Pickle tu dois pouvoir faire encore plus simple. Ça évite de devoir faire un parseur pour coder/décoder le fichier.

Contribution le : 04/09/2011 14:45
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: BGE&Python: Sauvegarde dans un fichier
OverdOzed
Inscrit:
12/11/2009 19:15
De quelque part entre la chaise et l'ordi
Post(s): 799
Dsl bobibou mais j'ai pas réussi a utiliser Pickle.

Le fichier est opérationnel !!! Vous pouvez sauvegarder la position et les propriétés que vous voulez selon l'objet qui active le script.

Charger:

#Charger un fichier
from bge import logic as gl

cont = gl.getCurrentController()
scene = gl.getCurrentScene().objects
own = cont.owner

#On ouvre le fichier de sauvegarde (r=lecture seule)

fichier = open("sauvegarde.sav","r")

#On crée une liste nommée coordonnee
donnees = []

#Chaque element de coordonnee est egal au contenu de fichier (separé par ":")
donnees = fichier.read().split(":")

# On assigne la position et les propriétés a l'objet courant 
own.position[0] = float(donnees[0])
own.position[1] = float(donnees[1])
own.position[2] = float(donnees[2])
own['Nom_Propriete'] = int(donnees[3])

print("charger")

# On ferme fichier
fichier.close()


Sauvegarder
#Sauvegarder
from bge import logic as gl

cont = gl.getCurrentController()
scene = gl.getCurrentScene().objects
own = cont.owner

# On ouvre le fichier en supprimant les anciennes données
fichier = open("sauvegarde.sav", "w")

# On inscrit la position x, y et z de l'objet courant ainsi que la propriété Mission
fichier.write( str(own.position[0]) + ":" + str(own.position[1]) + ":" + str(own.position[2]) + ":" + str(own['Nom_Propriete']) )

print("sauvegarder")

# On ferme le fichier
fichier.close()



Bon blend a tous

Contribution le : 09/09/2011 17:30
Créer un fichier PDF de la contribution Imprimer


Re: Sauvegarde dans un fichier. Script en fin de page
Touriste
Inscrit:
19/01/2013 21:00
Post(s): 1
bonjour les amis pouvez-m'aidez avec le load and save systeme que vous avez créer je suis plutot extremement debutant et je dois absolument avoir un sauvegarde et chargement dans mon jeu pour un projet scolaire final je suis aussi a la fois tout nouveau sur ce forum si vous voulez bien m'aider je vais envoyer mon (.blend) pour que vous vous essayez a qui voudra bien l'avoir. merci d'avance pour ceux ou celle qui voudrons bien m'aider. j'utiliser la version 2.64

Contribution le : 19/01/2013 21:07
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses Animation cycle de marche Fall Guys - Rigify 2 723 Hier 08:42:06
Ediuire 
Hors Sujet !! Tuto Tips - Faire des coutures dans Blender - fabriquer un pouf 1 1083 27/09 14:34:24
perrin34 
Hors Sujet !! Alors elle est PUNK cette bande-annonce de palette CMJN 0 93 24/09 15:33:07
xorturion 
Questions & Réponses Effets sabre laser image par image 2 148 23/09 07:27:45
muthesaint 
Questions & Réponses [non résolu] Rendu vide pour une simple animation 0 115 20/09 09:57:55
Scandinaze 
Questions & Réponses [non résolu] comment engendrer un mouvement selon un autre dans un simple système 1 175 18/09 17:10:37
doraynico 
Questions & Réponses [non résolu] Comment fusionner deux fichiers .blend ? 2 213 18/09 16:53:07
doraynico 
Questions & Réponses Comment mettre un délai sur une animation contenue dans une instance de collection? 0 1209 18/09 16:31:16
doraynico 
[WIP] et travaux terminés [WIP] Super Blenderello.    [1][2][3]...[7] 60 35602 05/09 14:50:01
albron 
Questions & Réponses Comment percer une forme courbe 0 248 03/09 04:23:51
tymoon2000 
Questions & Réponses vertex weights 0 255 31/08 16:59:42
fenixdragon 
Questions & Réponses bagapie 0 270 31/08 16:12:59
zilou 
Questions & Réponses Remplissage objet 2 437 29/08 16:28:10
poppy 
[WIP] et travaux terminés [terminé] Tracking pour Ovni 0 277 29/08 09:48:46
vinceproduc 
Moteur de jeu GameBlender et alternatives Réflexions sur la démarche de création d'un jeu vidéo    [1][2][3]...[5] 48 82091 26/08 06:52:11
breakout_12 
Questions & Réponses Export png de mauvaise qualité 0 262 24/08 19:17:35
Vort 
Questions & Réponses Calcul de volume sur une zone définie d'un objet avec un important maillage 2 381 22/08 15:37:09
Cecile-Blabla 
Questions & Réponses [non résolu] Animation qui ne se finit pas 1 366 21/08 23:09:34
moonboots 
Questions & Réponses convertir displacement shader en displacement géométrie 1 368 21/08 14:20:32
yawdpwal 
Hors Sujet !! Japanese weather presenter 0 1878 20/08 16:40:57
xorturion 

Qui est en ligne
143 utilisateur(s) en ligne (dont 63 sur Forums)

Membre(s): 0
Invité(s): 143


plus...
Nouveaux membres
JakeMcCray 4/10/2023
LesliClaxt 4/10/2023
AlexMenge3 4/10/2023
HelenWhitt 4/10/2023
Brodie56Y7 4/10/2023
BusterBlou 4/10/2023
ClaribelRc 4/10/2023
LottieHows 4/10/2023
RogelioPre 4/10/2023
NamSasaki 4/10/2023
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 6
BUG de Lyon
plus 216 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445