« 1 2 (3) 4 5 6 ... 9 »


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
02/11/2008 19:26
Post(s): 238
Oui tu fais en plus la somme des produits achetés (pour chaque produit). C'est bien ce que tu voulais ? Ça te permet de savoir si un produit à été acheté et combien tu en as en stock.

La commande permet de rentrer dans un dictionnaire le stock acheté. Mais fait attention car il ne s'accumule pas avec ton vrai stock, celui que tu as dans ta scène d'assemblage (les pièces que tu avais déjà avant l'achat).

Pour "mettre en mémoire" ce stock acheté il faut passer par les variables globales, sinon dès que le script arrivera à sa fin tout sera perdu.

Concernant le sensor Always, je me suis trompé : il faudrait plutôt relier le script à un bouton du genre "Confirmer achat".

Contribution le : 31/10/2010 11:10
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
22/05/2010 11:23
Post(s): 176
Au sujet des stock, je ne savait pas quoi écrire mais j'ai fais une "icone" pour l'option inventaire dans le menu d'achat (derniere case), avec confirmation ou annulation du "devi" et ou l'on peut voir en détail ce qu'il à été acheté.

exemple que je n'ai pas mis quand on clique sur la case "+" (comme un tableau, on a le nom, le nombre et le prix) :

- coque 1 class 1, 1 X, 1000
- coque 2 class 2, 1 X, 2000
- cheminée 1, 1 X, 400
- canon 1, 0 X, 0
etc.

là ou je suis bloqué, c'est de justement mettre en mémoire les objets achetés après confirmation pour les réutiliser dans le menu assemblage. (là dessus, on est d'accord)

Conclusion : il est évident que j'aie été ambigu sur certains points, je m'en excuse.

Contribution le : 31/10/2010 16:26
_________________
Tuer l'alien, écraser le mutant, bruler l'hérétique.
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
02/11/2008 19:26
Post(s): 238
Citation :
il est évident que j'aie été ambigu sur certains points, je m'en excuse.

Vue le nombre d'âneries que j'ai pu sortir depuis le début, tu es tout excusé

Pour transférer les achats, il faut utiliser les variables globales.
On peut créer une variable directement attachée au module du GE, mais de mon point de vue ça ne serait pas très propre.
Je repense aux systèmes de sauvegarde et de chargement, qui auront aussi accès aux variables globales.

En fait ce qui serait le plus propre c'est de créer une classe (un module) qui regrouperait les variables globales utilisées, le système d'initialisation, les fonctions de sauvegarde/chargement et d'autres fonctions si besoin. Ça permettrait aussi de regrouper toutes ces fonction en un seul .py, et ce serait plus compréhensible et facile d'accès.

Grâce à ces variables globales, tu pourras aussi accéder à la liste des objets en stock à partir d'un autre script (par exemple le script d'assemblage).

Ou alors si tu trouves ça trop compliqué pour toi, on en reste à 1 fonction = 1 .py.




Les variables globales sont telles que n'importe quel script lancé dans le GE peut accéder à ces variables, alors que deux scripts peuvent rarement communiquer entre eux aisément.
On défini une variable globale comme ceci :
GameLogic.variable = "ceci est une variable globale"

La variable 'GameLogic.variable' est alors créée. Elle peut aussi bien être une variable classique (nombre, texte, liste...) qu'une fonction ou même une classe (qui peut regrouper plusieurs fonctions et plusieurs variables).
L'utilité du dernier cas (la classe), c'est que tu peux y insérer toutes tes fonctions et toutes tes variables. Ça évite donc d'avoir plein de variables sur le module GameLogic ('GameLogic.variable1', 'GameLogic.variable2', GameLogic.liste1'...) et donc les conflits (vouloir créer une variable qui va en écraser une autre, ou création impossible...). De plus une classe peut être entièrement insérée dans un seul fichier .py et possède une cmmande qui permet d'initialiser ton jeu (chargement auto au lancement, déclaration dès le départ...).

Je posterais un exemple plus tard, là j'ai à faire

@+


EDIT : je t'ai fait un "petit" exemple :
met le sur un objet qui reste en permanence dans la scene (et dans le layer visible) (généralement je prend un empty qui ne sert qu'à l'initialisation et à rien d'autre). Relie le script à un sensor Always, et marque le contrôleur (coche la petite étoile) :
import pickle

class inventaire:
	def __init__(self):
		# initialisation des variables globales
		self.filename = "Sauvegarde.sauvegarde"
		self.argent = 0
		self.objets = {}
		
		# complete la ligne et remplace les '%' par ton prix :
		self.prix = {"OBCoque1": % , "OBMoteur1": % , "OBCanon1": % }
		
		# chargement au lancement du jeu (facultatif)
		self.charger()
	
	def charger(self):
		try:
			# chargement des donnees sauvees
			self.fichier = open(self.filename, "rb")
			self.argent = pickle.load(self.fichier)
			self.objets = pickle.load(self.fichier)
			self.fichier.close()
		
		except:
			# s'il n'y a pas de fichier de sauvegarde, on ne charge rien
			pass
	
	def sauver(self):
		# on sauve les donnees de l'argent et des objets acquis
		self.fichier = open(self.filename, "wb")
		pickle.dump(self.argent, self.fichier)
		pickle.dump(self.objets, self.fichier)
		self.fichier.close()
	
	def acheter(self, liste_achat):
		for objet in liste_achat:
			if objet in self.objets:
				self.objets[objet] += liste_achat[objet]
			else:
				self.objets[objet] = liste_achat[objet]

GameLogic.inventaire = inventaire()

Pour le script de confirmation d'achat (attaché au plan 'Argent achat') :
cont = GameLogic.getCurrentControlleur()
own = cont.owner

achat = {}
somme_achat = 0

# complete la ligne, tout les objets pouvant etre achetes doivent y etre :
liste_objet = ["OBMoteur1", "OBCoque1", "OBCanon1"]

# on retient la liste des objets achetes et leur quantitee
for objet in liste_objet:
	if own[objet] == 0:
		pass
	else:
		achat[objet] = own[objet]

for objet in achat:
	somme_achat += achat[objet]*GameLogic.inventaire.prix[objet]

GameLogic.inventaire.acheter(achat)
GameLogic.inventaire.argent += -somme_achat

Pour le panneau indiquant les valeurs, tu peux le relier au système de compte du nombre de pièce (un peu comme la somme totale).

Pour sauvegarder ton jeu, ajoute ce script au plan 'Sauvegarder' :
GameLogic.inventaire.sauver()

Pour charger ton jeu, ajoute ce script au plan 'charger' :
GameLogic.inventaire.charger()

Lorsque tu voudras faire ton système lors de l'assemblage, dans le script tu pourra accéder à tous les objets possédés et leur nombre avec 'GameLogic.inventaire.objets'.

Par contre je ne te garanti pas que les scripts marchent... me connaissant ça doit être bourré de fautes de syntaxes

@+

Contribution le : 31/10/2010 18:32
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
22/05/2010 11:23
Post(s): 176
Je vais enquêter la dessus. Merci pour ton aide, ton apport de connaissance et, le plus important, ta patience.

Je te confirmerai mon "rapport" sur tes écrits.

voici mon rapport :

Ton script est assez compréhensible appar quelques commandes.

Cependant, quelques erreurs sont apparu comme tu l'avais anticipé :

Dans la ligne de commande :

- Dernière ligne de ton script "enregistrement" (1er script), "inventaire non défini"

- (2e script) Ligne "liste objet = (mes pièce)" le 1er nom qui est mis, "n'existe pas". J'ai ésseillé en mettant coque en 1er, idem.

- Ces 2 lignes sont répétées 3-4 fois proportionnelle aux achat fais pendant le jeu.


Concernant la variable prix et somme achat, je supposes que c'est pour soustraire ce résultat au fonds disponibles et garder la valeur de l'objet pour le revendre ?

Contribution le : 01/11/2010 08:41
_________________
Tuer l'alien, écraser le mutant, bruler l'hérétique.
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
02/11/2008 19:26
Post(s): 238
Pour le premier problème, c'est une erreur de frappe (pardon ) :
Je l'ai corrigée; il faut remplacer la première ligne du script 'class invetaire:' par 'class inventaire:'

Pour l'autre problème, le problème vient bien de la ligne 8 ? As tu modifié la ligne ?
Si non, la console t'affiche quoi exactement ?

Concernant prix et somme_achat, tu as bien compris, et si tu veux tu peux faire un script tel que tous les prix se fixent sur les valeurs de la variable Globale GameLogic.inventaire.prix dès que tu change ce dernier.
Comme ça ça t'évite de changer les valeurs pour tous les objets qui utilise un prix dès que tu veux faire un changement (1 seul changement au final).

Contribution le : 01/11/2010 12:35
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
22/05/2010 11:23
Post(s): 176
Le 1er problème est corrigé et pour le 2e, il indique une erreur a la ligne 13 ou il y à ceci :

"if own[objet] == 0:"

Message : value = gameOB[key]: KX_GameObject, key OBcoque1 does not exist

oui, j'ai changé la ligne ou il y a le nom des pièce, j'ai fais OBcoque1 et OBcheminee1, j'ai même vérifié si mes pièces ont les mêmes noms et c'est le cas.

Je ne comprend pas très bien au sujet de gamelogic.invenaire.prix. Tu veux parler de "self.prix = { truc : 400, machin : 100 }" ?

Contribution le : 01/11/2010 17:25
_________________
Tuer l'alien, écraser le mutant, bruler l'hérétique.
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
02/11/2008 19:26
Post(s): 238
Je vois d'où ça vient : quelles sont les noms propriétés que tu as ajoutées pour compter le nombre de pièce ? Et sur quel objet as tu mis le script ?

À chaque fois que tu aura besoin du prix d'une pièce il suffit d'utiliser GameLogic.inventaire.prix[OBJET]. Ça évite de retaper le prix de chaque objet dans chaque script ou dans chaque propriété qui utilise un prix, c'est un gain de temps.
C'est toi qui vois si tu gardes ou pas.

On créer une variable associé à une classe en entrant dans la classe 'self.variable = X', ensuite on l'appel avec 'classe.variable'.

Dans Blender, lorsque tu fais 'GameLogic.classe = classe()', tu entre toutes les données de ta classe dans 'GameLogic.classe'. Le module GameLogic est utilisé dans tout les scripts, donc pour récupérer une variable de la classe 'classe' depuis n'importe quel script, il suffit de faire 'GameLogic.classe.variable'.

On peut faire la même chose avec les fonctions, mais comme on a plusieurs fonctions on utilise une classe, qui permet de tous les regrouper.

Si t'as besoin d'explications plus précises, regarde le tutoriel que j'ai donné, et pose tes questions si ça ne va toujours pas

@+

Contribution le : 01/11/2010 18:36
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
22/05/2010 11:23
Post(s): 176
Citation :
quelles sont les noms propriétés que tu as ajoutées pour compter le nombre de pièce ?


je ne comprend pas ta question. Je n'ai fais aucune propriety au sujet des pièces.

J'ai associer le 1er script "gest pce.py" au plan "marché" qui défile devant la camera une fois avoir cliqué sur le bouton "marché d'armement".

regarde le tutoriel que j'ai donné


Aurais-tu oublié de me donner le lien car me le donner c'est bien mais le voir c'est mieux

Contribution le : 02/11/2010 10:31
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
02/11/2008 19:26
Post(s): 238
Je parle du tuto Python (général) :
Citation :


Bon euh... pour l'histoire des propriétés je me suis mal exprimé... As tu fais un système de comptage des pièces achetées ?

Contribution le : 02/11/2010 17:57
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Mode achat dans game blender
Fou Furieux du Clan
Inscrit:
22/05/2010 11:23
Post(s): 176
Oui :

Dans l'option "inventaire" de mon menu d'achat, j'ai :
- coque 0 X détail (+)
- pièce 0 X detail (+)
- etc.

La 2e collonne répond à ta demande. Quand j'achetes une pièce, il est incrémenté de +1 (tout ceci en propriety, texture text).

Je suppose que c'est la qu'il faut ajouter les propietys en concordance avec la liste d'objet qui, soit-disant, n'existe pas.

Contribution le : 02/11/2010 20:59
_________________
Tuer l'alien, écraser le mutant, bruler l'hérétique.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 2 (3) 4 5 6 ... 9 »




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 rétrécir une face par rapport uniformément à son bord plutôt que par rapport à son centre. 8 3923 19/05 17:34:27
sapajou 
Questions & Réponses Labels autour de l'objet 2 83 19/05 14:33:09
Redstar 
Questions & Réponses APPEL AUX VOLONTAIRES 0 62 19/05 10:22:33
Melodicpinpon 
Questions & Réponses export 1000x trop petit 6 167 19/05 08:25:26
Redstar 
Hors Sujet !! FActualités : un petit journal humoristique    [1][2] 12 1048 18/05 02:06:25
meltingman 
Hors Sujet !! Le mal des répondeurs du forum (nouzautr's) 9 219 18/05 01:52:27
Thewada 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[57] 565 183021 17/05 20:44:39
Redstar 
Questions & Réponses Séparer un script en plusieurs add-ons 3 140 17/05 13:10:08
Redstar 
Questions & Réponses Graph editor: ne peut pas changer le handle type en free ? 9 224 17/05 12:27:31
Redstar 
Questions & Réponses [résolu] Transfer simulation cloth en boucle 5 298 17/05 12:25:56
Redstar 
Questions & Réponses [résolu] Pas d'ombre sur l'objet 8 204 16/05 19:37:11
Lylo 
Questions & Réponses Prb modélisation hache | mirror modifier 3 147 15/05 07:05:53
Rimpotche 
Questions & Réponses [non résolu] Blend4web et Blender version 2.80 ?    [1][2] 16 3198 14/05 09:50:34
blendinfos 
Questions & Réponses Je patine avec mon personnage 8 404 14/05 00:37:43
Lylo 
Questions & Réponses [résolu] rendre visible image as plane et wireframe 3 139 13/05 15:54:36
Rimpotche 
Graphisme alternatif Logiciel anatomie, bouger un écorcher ? 3 249 12/05 08:55:27
Redstar 
[WIP] et travaux terminés [terminé] Le bouï, mon ^premier moyen métrage, avec des FX et montage Blender :D 2 116477 12/05 06:42:07
Lylo 
Questions & Réponses [résolu] Rendu d'une image sans avoir de flou - cycle 4 316 11/05 10:50:27
Redstar 
Questions & Réponses Du masculin vers le féminin avec lattice 2 235 10/05 20:25:01
Melodicpinpon 
Hors Sujet !! Outils produtifs en animation avec Blender 3 - tutoriel de 15 mm 0 140 10/05 19:52:42
meltingman 

Qui est en ligne
213 utilisateur(s) en ligne (dont 156 sur Forums)

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


plus...
Nouveaux membres
Monroe10I 20/5/2022
ClaireGand 20/5/2022
JohnsonCor 20/5/2022
MerissaWol 20/5/2022
JohnnieVan 20/5/2022
JulissaRen 20/5/2022
DamarisHip 20/5/2022
FranklinAl 20/5/2022
JVCOla0457 20/5/2022
JacksonLam 20/5/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 9
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 238 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