(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 bas sculpture corps    [1][2][3] 28 652 Aujourd'hui 17:00:33
prometheusx 
Questions & Réponses Problème rendu 0 22 Aujourd'hui 14:06:15
Mikael 
Moteur de jeu GameBlender et alternatives [WIP] Cs (zones sol, héliport)    [1][2][3]...[41] 408 133880 Aujourd'hui 13:07:46
sbkodama 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[57] 562 94070 Aujourd'hui 12:08:35
Hook 
Questions & Réponses Mesure de plusieurs objet Blender 2.82 3 68 Hier 19:38:58
Rimpotche 
Le coin des geeks Vieilles cartes graphiques : Quadro FX5800 ou Quadro 4000 ? 4 322 Hier 15:22:46
patapote 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[9] 83 9437 Hier 12:59:48
Bibi09 
Questions & Réponses problème radeon pro render vêtements transparents 0 80 09/07 18:49:17
soloic 
Questions & Réponses [résolu] "vieux" fichier blender "invisible"    [1][2] 11 986 09/07 16:03:24
kinder 
Questions & Réponses [non résolu] Adoucir les courbes et espacer uniformément les vertices dans l'UV Map 2 264 09/07 13:35:44
moonboots 
Le coin des geeks pc bas prix    [1][2][3] 20 469 09/07 09:34:29
Bibi09 
Questions & Réponses [terminé] contrôle de l'angle d'incision du chanfrein/bevel 2 101 08/07 16:08:24
halphasten 
The Blender Clan 'tchat Clignotement de l'interface de blender 7 403 08/07 13:13:40
zezer 
Questions & Réponses Pass index 1 98 08/07 12:47:07
Rimpotche 
[WIP] et travaux terminés [terminé] court métrage 2020 8 300 07/07 18:44:19
flahaut 
Questions & Réponses épaisseur sur une texture 6 167 07/07 15:28:27
moonboots 
Questions & Réponses [résolu] Affichage de la grille du plan et des axes 2 129 07/07 14:27:44
gedru 
Questions & Réponses [résolu] Blender 2.80 ne démarre pas 7 1174 07/07 09:42:16
geo160 
Questions & Réponses Knife tool a arrêté de fonctionner 1 110 06/07 16:29:51
Rimpotche 
Hors Sujet !! Système solaire open source 5 1605 26/12/2019 12:46
Bibi09 

Qui est en ligne
137 utilisateur(s) en ligne (dont 92 sur Forums)

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


plus...
Nouveaux membres
PrincessCl 12/7/2020
RuthNorton 12/7/2020
AdelaBella 12/7/2020
MelbaG4555 12/7/2020
LLEMinna32 12/7/2020
Bess99N802 12/7/2020
JurgenHasw 12/7/2020
Mikael 12/7/2020
soloic 9/7/2020
kinder 9/7/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 23
Anniv du BlenderClan !
Aou 7
anniversaire Cem47
Aou 13
Anniversaire Siskas
plus 268 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