(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] Blender LAG    [1][2] 12 102 Aujourd'hui 17:42:51
Vespasien28 
Moteur de jeu GameBlender et alternatives [non résolu] système Sid Meyer like (Civilization)    [1][2] 12 523 Aujourd'hui 16:57:48
Redstar 
Questions & Réponses [non résolu] Problème de SEAM 0 13 Aujourd'hui 15:52:39
kaoponlek 
Questions & Réponses Problème révélé par le Graph Editor 0 16 Aujourd'hui 14:09:06
Horemheb 
[WIP] et travaux terminés Modélisation d'un humain    [1][2] 16 707 Aujourd'hui 13:37:18
Arielboid 
Questions & Réponses L' Addon "Offset edge - extrude" fait planter Blender 0 21 Aujourd'hui 10:48:44
sapajou 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[5] 44 3180 Aujourd'hui 08:08:18
Redstar 
Questions & Réponses problème texture qui s'ajoute au groupement de plusieurs meshes 2 42 Hier 21:08:17
skatekitchen 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Reprise du développement    [1][2][3]...[47] 468 80578 Hier 20:59:49
Bibi09 
Questions & Réponses Mesh qui se déforme avec le mouvement de l'armature    [1][2] 11 87 Hier 20:30:16
Homarus 
[WIP] et travaux terminés [terminé] ANIMATION HELICOPTERE // GUERRE DU VIETNAM    [1][2] 11 888 Hier 20:17:22
ju 
[WIP] et travaux terminés Un canard, avec des plumes. 2 66 Hier 17:17:57
Guppy88 
Questions & Réponses [non résolu] Probléme de mirroir    [1][2][3] 24 205 Hier 12:25:34
Vespasien28 
Questions & Réponses qui maitrise cloth modeling Pour m'aider SVP 0 43 Hier 11:28:50
G-tout-court 
Questions & Réponses [résolu] [Blender 2.8] Sélectionner les keys de TOUTES les actions (rigs+objets) 4 140 Hier 10:24:12
Rimpotche 
Python & Plugins Importer, nommer et hiérarchiser l'anatomie humaine avec un script 0 44 06/04 12:25:29
Melodicpinpon 
The Blender Clan 'tchat [BUG PARIS] RDV en 2020 !    [1][2][3]...[70] 699 182357 06/04 10:44:33
stev 
Questions & Réponses Circle selection ne sélectionne pas plusieurs objets 1 103 05/04 19:23:45
Melodicpinpon 
Graphisme alternatif Un court-métrage apocalyptique en 2D ! 0 60 05/04 18:25:39
Martulen 
Questions & Réponses [résolu] Orientation des normals 6 97 05/04 18:06:30
RHENA 

Qui est en ligne
95 utilisateur(s) en ligne (dont 51 sur Forums)

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


Vespasien28, plus...
Nouveaux membres
NanceeBain 8/4/2020
MichaleMoj 8/4/2020
BonnieLyr 8/4/2020
EveretteFi 8/4/2020
kaoponlek 8/4/2020
Vespasien28 5/4/2020
RHENA 5/4/2020
Cedrazar 5/4/2020
ewaca 3/4/2020
ThierryM 2/4/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