(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
_________________
Ce n'est pas parce qu'on s'acharne à suivre une direction que c'est la bonne.
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): 21819
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
_________________
Ce n'est pas parce qu'on s'acharne à suivre une direction que c'est la bonne.
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): 3447
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
_________________
Ce n'est pas parce qu'on s'acharne à suivre une direction que c'est la bonne.
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): 3447
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
_________________
Ce n'est pas parce qu'on s'acharne à suivre une direction que c'est la bonne.
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): 3447
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
_________________
Ce n'est pas parce qu'on s'acharne à suivre une direction que c'est la bonne.
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 [non résolu] Problème IK : pied qui tourne au lieu d'être fixé au sol 2 28 Aujourd'hui 16:37:55
prometheusx 
Questions & Réponses appliquer une animation NLA 1 7 Aujourd'hui 16:16:13
prometheusx 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Date de sortie 1er juillet 2020    [1][2][3]...[51] 504 87031 Aujourd'hui 13:08:43
Hook 
Questions & Réponses affichage progressif bevel de courbe 5 92 Aujourd'hui 10:25:23
jlf 
The Blender Clan 'tchat Free addon Modélisation procédurale par nodes 1 41 Aujourd'hui 08:47:52
WinZs 
[WIP] et travaux terminés [WIP] Alpaga in love 7 150 Aujourd'hui 00:20:08
Bibi09 
Questions & Réponses Problème de rendu (débutant) 1 41 Hier 16:16:59
Rimpotche 
Questions & Réponses Grosse différence d'éclairage sur le rendu final VS le mode Rendered 9 131 29/05 21:42:20
Crocodile_13 
Questions & Réponses Problème avec le nodes Color Ramp 5 174 29/05 20:59:01
JaAlVir657 
Python & Plugins Comment renommer "Key" ? (le chef des shapekeys)    [1][2] 18 455 29/05 19:06:29
lucky 
Questions & Réponses [résolu] théorie lowpoly / highpoly 3 64 29/05 17:53:57
moonboots 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[7] 65 6319 29/05 16:40:53
Bibi09 
[WIP] et travaux terminés Les fonds de mes rendus 4 155 29/05 14:05:18
Crocodile_13 
Python & Plugins [résolu] obtenir un résultat fixe suite au déplacement souris 1 105 28/05 14:28:07
Bibi09 
Moteurs de rendu rendu Povray sous Blender 2.6 + trace de log 7 12113 28/05 00:25:30
MauriceRaybaud 
Questions & Réponses [non résolu] Personnage et CAT5 - VRCHAT 0 80 27/05 22:31:10
Muffet 
Questions & Réponses Conseils pour modéliser un corps 4 177 27/05 17:48:43
moonboots 
Questions & Réponses Comment dupliquer une face autour d'un axe? 1 86 26/05 19:05:12
moonboots 
Questions & Réponses Comment faire une boucle infinie (animation) 9 176 26/05 13:00:46
3dlone 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3] 27 8865 26/05 01:39:39
Bibi09 

Qui est en ligne
57 utilisateur(s) en ligne (dont 37 sur Forums)

Membre(s): 1
Invité(s): 56


moonboots, plus...
Nouveaux membres
BradleySau 31/5/2020
JacobStatt 31/5/2020
Norman07A5 31/5/2020
OwenScherk 31/5/2020
BeulahMull 31/5/2020
MeiKahl099 31/5/2020
Samux 30/5/2020
titisteph 29/5/2020
Muffet 27/5/2020
MadK 26/5/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 270 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445