(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): 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
_________________
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
[WIP] et travaux terminés image couteau dans caillou qui saigne 0 1 Aujourd'hui 21:57:33
Crocodile_13 
Questions & Réponses Placer sa camera sur un HDRI    [1][2] 10 293 Aujourd'hui 21:32:01
meltingman 
[WIP] et travaux terminés [terminé] Chaussures Très Réalistes (.bend disponible) 5 114 Aujourd'hui 21:23:47
Crocodile_13 
[WIP] et travaux terminés [WIP] Scène de Pti dej à la Française - EVEE a donf - 2.9 Blender    [1][2][3] 21 210 Aujourd'hui 21:16:57
Crocodile_13 
Questions & Réponses [WIP] Problème Rétopo 4 25 Aujourd'hui 21:12:25
meltingman 
Le coin des geeks gain de fluidité viewport entre ryzen 3900X et 3950X    [1][2][3] 28 1302 Aujourd'hui 15:45:54
papillon 
Questions & Réponses hdri en mode ombrage 2 101 Aujourd'hui 10:27:06
kimlicrea 
Questions & Réponses Modifier les attribue de plusieurs objet en même temps (lumière) 3 60 Aujourd'hui 10:21:47
kimlicrea 
[WIP] et travaux terminés [terminé] Moderno 404    [1][2] 13 476 Hier 20:26:41
moonboots 
Questions & Réponses Lissage de face 4 75 Hier 19:43:53
Maxence34 
Mes premières images sous Blender (débutants) Première réalisation    [1][2] 15 8972 Hier 02:13:26
Talason 
The Blender Clan 'tchat Addon convertisseur d'images en courbes 2 70 22/10 20:29:31
Rimpotche 
The Blender Clan 'tchat Pour les arboriculteurs 3D 1 73 22/10 18:05:18
moonboots 
Hors Sujet !! Faire parler son personnage en 5 minutes - tutoriel Francais - Blender 2.9 4 128 22/10 13:03:28
meltingman 
GIMP Faire un drégradé selon la forme sous gimp 9 101 22/10 12:49:57
Thewada 
Questions & Réponses [résolu] Perte des Vertex lors d'un Separate 7 99 21/10 21:45:05
debutant 
[WIP] et travaux terminés [terminé] Pantin articulé    [1][2] 12 6760 21/10 18:53:51
meltingman 
Hors Sujet !! Une citrouille en 13 clics - Tutoriel - Blender 2.9 2 161 19/10 23:40:15
meltingman 
Hors Sujet !! un banc de dauphin - tutoriel - workflow sculpte > bake - 2.9    [1][2] 12 462 19/10 23:36:41
meltingman 
Questions & Réponses [résolu] Particule réaliste pour un sprite    [1][2] 12 682 19/10 13:39:34
Redstar 

Qui est en ligne
157 utilisateur(s) en ligne (dont 94 sur Forums)

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


Crocodile_13, plus...
Nouveaux membres
Christoph 24/10/2020
Sylv07 23/10/2020
Maxence34 23/10/2020
Talason 23/10/2020
mahaa 22/10/2020
Obelia 22/10/2020
NovakVII 21/10/2020
Sylv 21/10/2020
ludo66 16/10/2020
azemuro 15/10/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 9
BUG de Lyon
plus 264 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