Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
905 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  fonction achat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction achat

n°2294813
kaya974
Posté le 15-01-2017 à 16:02:43  profilanswer
 

salut
je vous explique mon problème je suis débutant en python, j'aime bien me lancer quelques defis mais la je suis bloqué et ne comprends pas pourquoi je voudrais quelques explications :)

 

en gros imaginant un jeu je voudrais que l'utilisateur puisse construire quelque chose(une usine) qui va lui couter quelque chose(des fonds)
sauf que rien ne fonctionne

 
Code :
  1. # -*-coding:Utf-8 -*
  2. def solde(soldeG=50, fp=0,fm=0):
  3.     """en gros largent dispo sur le compte"""
  4.     soldeG= soldeG - fm + fp#fm pours les depenses fp pour les rentrées
  5.     return soldeG
  6. #la fonction lvl lie au batiment chaque batiment aura le sien
  7. def usineA(lvlUsineA=0):
  8.     """niveau de l'usine A"""
  9.     lvlUsineA+=1
  10.     return lvlUsineA
  11. #fonction prix lié aussi a chaque batiment
  12. def prixUsineA(prixA=1):
  13.     """prix de l'usine A"""
  14.     prixA*=1.5
  15.     return prixA
  16.        
  17. #fonction achat lié aussi a chaque batiment
  18. def achatUsineA():
  19.     i=0
  20.     while i <10:
  21.         i+=1
  22.         print("voulez vous construire l\'usine" )
  23.         reponse=input("oui pour construire autre pour annuler" )
  24.         if reponse == "oui" and prixUsineA()<=solde():
  25.             solde(fm=prixUsineA())
  26.             print("il vous rest", solde()-prixUsineA())
  27.             print(usineA(),prixUsineA())
  28.         else:
  29.             print("pas assez" )
  30. print("votre solde",solde())
  31. achatUsineA()
 

Solde sera affiché souvent du coup pour l'afficher juste solde()
mais je voudrais que sa valeur puisse etre modifiée juste en l'appelant solde(fm=)si depenses solde(fp=) si rentrées

 

pour qu'ils soit a jour j'ai essayais "soldeG= soldeG - fm + fp" mais ça n'a pas l'air bon

  

dans les fonctions usineA et prixUsineA je voudrais qu'a chaque fois que je les appellent elles soient incréementées de 1 ( ca ne marche pas :p )

 

la fonction achat attribuée au batiment si il y a suffisamment de "solde" je voudrai incrémenter usineA() prixUsineA() (enfaite juste les appeler elles devraient s’incrémenter tte seule)

 


serait il possible par la suite de faire un fichier pour les fonctions achat, un fichier pour les fonction prix etc...
exemple plus tard  un menu avec plusieurs images de batiment derriere chaque image j'appellerai la fonction achatUsine() [ j'ai tenté et réussit ca donne mieux ]

 


Merci d'avance

 

ps: ca ne fait que une semaine que je me suis mis au codage soyez indulgent ^^

 

edit :

 

chaque fichier séparé

 

menuConstruction.py
\\juste pour tester l'ensemble bientot menu ou autre.

Code :
  1. # -*-coding:Utf-8 -*
  2. from fonctionGenerale import *
  3. from fonctionAchat import *
  4. from fonctionNiveau import *
  5. from fonctionPrix import *
  6. print("quel batiment veux tu améliorer" )
  7. print("1.usine A est niveau",niveauUsineA(),"l'ameliorer pour",prixUsineA())
  8. print("2.usine b est niveau""l'ameliorer pour" )
  9. print("3.usine b est niveau""l'ameliorer pour" )
  10. construction=0
  11. construction=input()
  12. if construction==1:
  13.     achatUsineA()
  14. elif construction==2:
  15.     print("2" )
  16. elif construction == 3:
  17.     print("3" )
  18. else:
  19.     print("non" )
 

fonctionGenerale.py

 

\\ toutes les fonctions qui seront affichées partt ou presque.

Code :
  1. # -*-coding:Utf-8 -*
  2. def solde(soldeG=50, fp=0,fm=0):
  3.     """en gros largent dispo sur le compte"""
  4.     soldeG= soldeG - fm + fp#fm pours les depenses fp pour les rentrées
  5.     return soldeG
 

fonctionAchat.py
\\toutes les fonctions d'achat de tel batiment ou objet.

Code :
  1. # -*-coding:Utf-8 -*
  2. from fonctionGenerale import *
  3. from fonctionPrix import *
  4. from fonctionNiveau import *
  5. #fonction achat lié aussi a chaque batiment
  6. def achatUsineA():
  7.         print("voulez vous construire l\'usine" )
  8.         reponse=input("oui pour construire autre pour annuler" )
  9.         if reponse == "oui" and prixUsineA()<=solde():
  10.                 solde(fm=10)
  11.                 niveauUsineA()
  12.                 prixUsineA()
  13.                 print("il vous rest", solde()-prixUsineA())
  14.                 print(niveauUsineA(),prixUsineA())
  15.         else:
  16.             print("pas assez" )
 

fonctionNiveau.py
\\toutes les fonctions niveau qui seront incrémentées

Code :
  1. # -*-coding:Utf-8 -*
  2. #la fonction lvl lie au batiment chaque batiment aura le sien
  3. def niveauUsineA(lvlUsineA=0):
  4.     """niveau de l'usine A"""
  5.     lvlUsineA+=1
  6.     return lvlUsineA
 

fonctionPrix.py
\\toutes les fonctions prix qui seront incrémentées au choix ici en l’occurrence *1.5
je voudrais qua chaque appel de cette fonction sa valeur soit *1.5 et qu'elle la garde

 

exemple: 1,1.5,2.25,3.375 etc

Code :
  1. # -*-coding:Utf-8 -*
  2. #fonction prix lié aussi a chaque batiment
  3. def prixUsineA(prixA=1):
  4.     """prix de l'usine A"""
  5.     prixA*=1.5
  6.     return prixA


Message édité par kaya974 le 15-01-2017 à 16:03:32
mood
Publicité
Posté le 15-01-2017 à 16:02:43  profilanswer
 

n°2294828
masklinn
í dag viðrar vel til loftárása
Posté le 16-01-2017 à 10:49:59  profilanswer
 

Le paramètre "soldeG" est juste une valeur par défaut, ce n'est pas un espace de stockage. Quand tu mets à jour ton solde, jamais tu ne re-stockes le nouveau solde, donc il est perdu et tu continues à utiliser la valeur par défaut.
 
Il faut soit stocker ton solde dans une variable globale et le mettre à jour, soit créer un objet "Compte" qui va contenir un solde et pouvoir être modifié par diverses opérations. Accessoirement avoir une seule fonction qui permet de chercher, incrémenter et décrémenter le solde c'est un peu étrange, il serait probablement plus simple d'avoir 3 méthodes différentes:
 

Code :
  1. class Compte:
  2.    def __init__(self, initial):
  3.        self._solde = initial
  4.  
  5.    def solde(self):
  6.        return self._solde
  7.  
  8.    def rentree(self, montant):
  9.        self._solde += montant
  10.        return self
  11.  
  12.    def depense(self, montant):
  13.        if montant > self._solde:
  14.            raise ValueError("On ne peut pas dépenser plus qu'on ne gagne!" )
  15.        self._solde -= montant
  16.        return self


Idem les usines, devaient être une classe d'où tu peux construire de multiples instances.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  fonction achat

 

Sujets relatifs
Comment réaliser un historique d'achat ? (PHP, MySQL)Fonction backspace et mode insert versus overwrite.
Matplotlib variable -> fonctionFonction Random
Fonction JS pour récupérer le tag image "Alt" sur un diaporama[Novice] De la ldc à Tkinter Problème de fonction
[EXCEL] Problème avec la fonction SOMME.SI.ENSFonction : Passer un élément d'array en paramètre
Utilisation de la fonction COUNT() avec des valeurs NULL[JS/Xml] Parser des éléments en fonction de la balise contenante?
Plus de sujets relatifs à : fonction achat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR