« 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 Smoothing groups ou équivalent ? (3dsMax to Blender) 7 115 Aujourd'hui 01:10:41
JaAlVir657 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[9] 88 6229 Hier 18:54:27
blend74 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal 1 67 Hier 09:30:34
Redstar 
Graphisme alternatif les addons pour blender : bumarin etc    [1][2] 12 442 20/09 21:56:56
blend74 
Questions & Réponses [non résolu] Problème Aspect du verre (Glass BSDF) 1 62 20/09 19:50:51
Miaunik 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[40] 397 39169 17/09 17:56:10
Bibi09 
Questions & Réponses [non résolu] IES Lights 4 161 17/09 16:24:14
jcnouveau 
Questions & Réponses Couleur de peau 0 87 17/09 14:31:20
Carne 
Hors Sujet !! Sinoceratops project - Ateliers suivies de A à l'Animation    [1][2][3][4] 34 4061 16/09 20:53:38
meltingman 
Questions & Réponses Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil? 6 391 16/09 14:56:23
lucky 
Questions & Réponses Ouvrir une définition (fichier .txt) de l'objet actif avec un raccourci depuis la vue 3D 0 84 15/09 15:30:03
Melodicpinpon 
[WIP] et travaux terminés [terminé] Utilisation de Blender pour esquisser des objets réels    [1][2] 12 322 14/09 19:18:19
MilWolf 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2] 19 2642 14/09 12:20:39
Riggelm 
The Blender Clan 'tchat Les tutos de Stev ( CG Groovy ) 6 1142 13/09 11:17:43
stev 
Questions & Réponses Les objets qui voyagent seuls 2 166 12/09 14:20:48
D3DModelisation 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[21] 202 18725 11/09 20:09:34
moonboots 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[55] 544 167759 11/09 10:08:20
sbkodama 
Questions & Réponses control sur le grow mask et smooth mask en sculpt 2 194 10/09 23:50:51
maxime 
Questions & Réponses Difficultés de reprise d'un vieux projet 4 300 10/09 12:39:47
GLM 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 90 15941 08/09 21:11:55
yawdpwal 

Qui est en ligne
77 utilisateur(s) en ligne (dont 27 sur Forums)

Membre(s): 7
Invité(s): 70


MammieHos2, CyrilHoffn, RoxieLaver, KaceyU0980, WyattK0425, ThaoEthrid, MeriPrada, plus...
Nouveaux membres
TyrellLitt 22/9/2021
MarquitaWi 22/9/2021
EarthaEdmu 22/9/2021
KellyWurfe 22/9/2021
RolandoBra 22/9/2021
AmandaIngr 22/9/2021
SharonaCha 22/9/2021
GlennLima 22/9/2021
CortezCorn 22/9/2021
MichelineP 22/9/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Oct 8
Anniversaire du Grand Mechant Fadge
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
plus 248 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