diff --git a/src/Champs.py b/src/Champs.py index 96c43036f1bf04a051c064c95dbd45c4890bc538..1697f2fe4b3741d5d6ee795642f57c30e2bdc7e3 100644 --- a/src/Champs.py +++ b/src/Champs.py @@ -5,16 +5,32 @@ from Image import transformImage #from Infrastructure import Infrastructure listeImage = [transformImage(pygame.image.load('../assets/Plantation/crop'+str(i)+'phase.png'), 120, 120) for i in range(1,5)] iconStaticSize = (100,100) - +""" +@nom = Game : Class : Super class qui répresente un champs +@param : pas de parametre +@return : void +@Description : +Super class qui répresente un champs +""" class Champs: iconInsecteStatic = pygame.transform.scale(pygame.image.load("../assets/Plantation/leech.png"),(90,90)) - + """ + @nom = __init___ : Méthode Constructor : Constructeur de la classe Champs + @param : + temperature : int : temperature du champs + humdite : int : humidité du champs + tempsAvantMaturation : int : tempsAvantMaturation de la plante + pos : int : position x et y + image : string : chemin de l'image + @return : void + @Description : + Met en place les champs + """ def __init__ (self, temperature, humidite, tempsAvantMaturation, pos, image): self.pourcentagePlanteFane = 10 self.temperature = temperature self.humidite = humidite - self.TAM = tempsAvantMaturation self.pos = np.array(pos) self.image = pygame.image.load(image) self.imageSize = np.array(self.image.get_size()) @@ -45,7 +61,13 @@ class Champs: self.setInformation("status", self.image,True) - + """ + @nom = plantationGrandit : Methode : Change l'image et le status de la plante au tour suivant + @param : + @return : void + @Description : + Change l'image et le status de la plante au tour suivant + """ def plantationGrandit(self): self.indiceImage += 1 if self.indiceImage < 4: @@ -56,9 +78,13 @@ class Champs: elif(self.indiceImage == 5): self.isInfeste = False self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/fanne.png'), 120, 120) + """ - def setInfrastrcture(self,pos,image): - return Infrastructure(pos,image) + @nom = draw : Function : Affiche les images et info dans + @param : + @return : void + @Description : + Change l'image et le status de la plante au tour suivant """ def draw (self, screen, camera): scaleImage = camera.scaleImage(self.image) @@ -103,12 +129,17 @@ class Champs: (self.rectScale.h-self.rectScalInfecte.h) /2) ) - - def changeText (self, camera): - scaleText = camera.scaleImage(self.text) - if scaleText: - self.zoomText = scaleText + """ + @nom = setInformation : Function : set les informations sur chaque champs + @param : + clef : string : nom de colonne clef du dictionnaire + valeur : string : nom de colonne valeur du dictionnaire + isImage : bool : si la valeur et une image + @return : void + @Description : + Change l'image et le status de la plante au tour suivant + """ def setInformation(self,clef,valeur,isImage = False): self.descripteurChamps[clef] = valeur if isImage : @@ -116,13 +147,28 @@ class Champs: else : self.imageSurfaceinfo[clef] = police.render(str(valeur),True,(0,0,0)) - def showInfo(self,screen,rectangle,bat = {}): + """ + @nom = showinfo : Function : Affiche les infos sur les champs + @param : + screen : Surface : Surface sur laquelle nous allons écrire + rectangle : pygame.Rectangle : Surface sur laquelle nous allons écrire + @return : void + @Description : + Change l'image et le status de la plante au tour suivant + """ + def showInfo(self,screen,rectangle): i = 0 for k,v in self.descripteurChamps.items(): screen.blit(self.imageSurfaceinfo[k],(rectangle.x,rectangle.y + i)) i += 30 - +""" +@nom = Game : Class : Super class qui répresente un champs +@param : pas de parametre +@return : void +@Description : +Super class qui répresente un champs +""" class Buisson (Champs): def __init__ (self, pos, prix = 10000): super().__init__(0, 0, 0, pos, '../assets/Interface/buissonCadenas.png') @@ -146,18 +192,32 @@ class TerrainVide(Champs): class Houblon (Champs): - iconStatic = transformImage(pygame.image.load('../assets/Plantation/houblon.png'), *iconStaticSize) - textStatic = police.render('Houblon',False, (0,0,0)) - textDescriptionStatic = police.render("Houblon sa marche bien",False,(0,0,0)) montantAchat = 250 montantVente = 600 + iconStatic = transformImage(pygame.image.load('../assets/Plantation/houblon.png'), *iconStaticSize) + textStatic = police.render('Houblon',False, (0,0,0)) + textDescriptionStatic = police.render("Montant Achat :"+str(montantAchat),False,(0,0,0)) + textDescriptionStatic2 = police.render("Montant Vente :"+str(montantVente),False,(0,0,0)) + def __init__ (self, pos): super().__init__(0, 0, 0, pos,'../assets/Plantation/champ.png') self.text = self.police.render("Température : " + str(self.temperature), False, (0,0,0)) self.zoomText = self.text self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) + self.descripteurPlante = { + } + + self.imageSurfacePlante = { + + } + + super.setInformation("Montant Achat",200) + super.setInformation("Montant Vente",800) + print("changement fait") + + class Ble (Champs): iconStatic = transformImage(pygame.image.load('../assets/Plantation/wheat.png'), *iconStaticSize) diff --git a/src/Game.py b/src/Game.py index 02262678172e66ed8a73b9186631ce0998600e8b..da051f97374227c11f4e239fcf32e02159d7ff80 100644 --- a/src/Game.py +++ b/src/Game.py @@ -6,21 +6,31 @@ from Camera import Camera from Image import * from Temps import Temps from Infrastructure import * - +#Limite du zoom RAYON_MUR_INVISIBLE = 2000 SAISONS = ["Printemps", "Été", "Automne", "Hiver"] -MOIS = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"] +#Défini la police police = pygame.font.SysFont("roboto", 30) -#TODO : MAJEUR : continuer le pourcentage des plantes - #1-> Faire une hiérarchie entre les batiments si il ya un puit et un reservoir appliquer le boost du reservoir et non du puit - #2->quand on place un batiment possable sur un champ il affiche le descripteur du champ et pas de l'infrastructure - - + """ + @nom = Game : Class : Classe principale du jeu + @param : pas de parametre + @return : void + @Description : + Constitue l'élément principal dans lequelle évolue le jeu + """ class Game: imagestaticplantation = pygame.image.load('../assets/Interface/imagePlantation.jpeg') imagestaticbatiment = pygame.image.load('../assets/Interface/imageBatiment.jpeg') imagestaticinfor = pygame.image.load('../assets/Interface/imageinfo.jpg') + + """ + @nom = __init___ : Méthode Constructor : Constructeur de la classe Game + @param : pas de parametre + @return : void + @Description : + Met en place l'interface et les éléments principaux du jeu + """ def __init__ (self): self.screen = pygame.display.set_mode((0,0), pygame.FULLSCREEN) self.image = Image(self.screen) @@ -35,12 +45,15 @@ class Game: self.batiment = [] self.temps = Temps() + #Ajout des 12 champs de la partie for i in range(12): self.champs.append(Buisson(((i%4)*300-550,(i//4)*250-430))) + + #Pour les fps self.clock = pygame.time.Clock() self.selectedChamp = None - self.selectedBatiment = None + #Attribut pour image money self.imageMoney = pygame.transform.scale(self.image.moneyImage, np.array(self.image.moneyImage.get_size())/5) self.camera = Camera(np.array(self.screen.get_size())/2) @@ -48,50 +61,66 @@ class Game: self.frame = 0 self.buyFrame = -1000 + #Interface pour le tour suivant + #Les 2 attributs pour la fleche qui change de proportion self.tourSuivantOriginal = self.image.arrowNextImage self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (100,100)) - self.coordonneeSuite = self.screenSize[0]-self.tourSuivantModif.get_width() - 120, self.screenSize[1] - self.tourSuivantModif.get_height() - 120 - self.suiteRectangle = pygame.rect.Rect(*self.coordonneeSuite, 100, 100) + #Défini l'interface le menu des batiments self.coordonne_info = pygame.rect.Rect(self.screen.get_width()*0.82,self.screen.get_height()*0.18,self.screen.get_width()*0.19,self.screen.get_height()*0.5) self.recInformation = pygame.rect.Rect(self.coordonne_info) self.rectPlantation = pygame.rect.Rect(0,0,self.temps.getImageSaison().get_width(),self.screen.get_height() - self.temps.getImageSaison().get_height()) self.recBatiment = pygame.rect.Rect(self.temps.getImageSaison().get_width(), self.screen.get_height() - self.temps.getImageSaison().get_height(), self.screen.get_width() * 0.65, self.temps.getImageSaison().get_height()) - self.rectPlantationimage = pygame.transform.scale(Game.imagestaticplantation,(self.rectPlantation.w,self.rectPlantation.h)) - self.rectBatimentimage = pygame.transform.scale(Game.imagestaticbatiment,(self.recBatiment.w,self.recBatiment.h)) - self.rectinfoimage = pygame.transform.scale(Game.imagestaticinfor,(self.recInformation.w,self.recInformation.h)) + #Background et hitbox pour le tour suivant et sa fleche + self.coordonneeSuite = self.screenSize[0]-self.tourSuivantModif.get_width() - 120, self.screenSize[1] - self.tourSuivantModif.get_height() - 120 + self.suiteRectangle = pygame.rect.Rect(*self.coordonneeSuite, 100, 100) self.recTourSuivant = pygame.rect.Rect( self.recBatiment.x + self.recBatiment.w ,self.screen.get_height() - self.temps.getImageSaison().get_height(), self.screen.get_width() - self.temps.getImageSaison().get_width() - self.recBatiment.w,self.temps.getImageSaison().get_height()) + + #défini interface pour le menu des plantes + self.rectPlantationimage = pygame.transform.scale(Game.imagestaticplantation,(self.rectPlantation.w,self.rectPlantation.h)) + self.rectBatimentimage = pygame.transform.scale(Game.imagestaticbatiment,(self.recBatiment.w,self.recBatiment.h)) + self.rectinfoimage = pygame.transform.scale(Game.imagestaticinfor,(self.recInformation.w,self.recInformation.h)) + + #DragAndDrop self.dragBatiment = None self.dragPlantation = None - + """ + @nom = gameLoop : Boucle principale du jeu + @param : pas de parametre + @return : void + @Description : + Méthode qui constitut la boucle prinicpale du jeu et qui fait évoluer la partie + """ def gameLoop (self): while True: self.screen.blit(self.image.backgroundImage, (0,0)) - #CHAMPS------------------ + #CHAMPS + # Affichage des champs for champ in self.champs: champ.draw(self.screen, self.camera) + # Affichage des batiments for bat in self.batiment: bat.draw(self.screen, self.camera) - #DEBUT BOUCLE INTERFACE------------------------ + #DEBUT mise en place INTERFACE #Onglet Information - #pygame.draw.rect(self.screen, (0, 127, 0), self.recInformation) + self.screen.blit(Game.imagestaticinfor,(self.coordonne_info.x,self.coordonne_info.y)) - # Météo + # Onglet gestion de la météo self.screen.blit(self.temps.getImageSaison(), (0, self.screen.get_height() - 300)) self.screen.blit(self.temps.iconSaison,(10,self.screen.get_height() - self.temps.iconSaison.get_height())) self.screen.blit(self.temps.tempsaisonImage,(10,self.screen.get_height() - self.temps.iconSaison.get_height() - 50)) @@ -103,11 +132,13 @@ class Game: #Onglet plantation self.screen.blit(self.rectPlantationimage,(0,0)) + #Onglet tour suivant pygame.draw.rect(self.screen,(0, 127, 0),(self.recTourSuivant)) self.screen.blit(self.tourSuivantModif, (self.recTourSuivant.x+ (self.recTourSuivant.w - self.tourSuivantModif.get_width())/2, self.recTourSuivant.y+ (self.recTourSuivant.h - self.tourSuivantModif.get_height())/2)) + #Boucle qui place tous les objets plantation dans le menu for i,c in enumerate(typePlantation): x = self.rectPlantation.x + ( 0 if i%2 else 170) y = self.rectPlantation.y + (i//2) * self.rectPlantationimage.get_height()/4 @@ -118,12 +149,14 @@ class Game: r = pygame.rect.Rect(x,y,c.iconStatic.get_width(),c.iconStatic.get_height()+ 20 ) self.screen.blit(c.textStatic, (x,y)) self.screen.blit(c.iconStatic,(x,y+c.textStatic.get_height() )) + #Si la souris est dessus on affichage d'un rectangle if ( (r.collidepoint(pygame.mouse.get_pos()))): pygame.draw.rect(self.screen,(138, 227, 237), r,1) self.screen.blit(c.textDescriptionStatic,(self.recInformation.x,self.recInformation.y)) #Onglet batiment + #Boucle qui place tous les objets infrastructure dans le menu self.screen.blit(self.rectBatimentimage,(self.temps.getImageSaison().get_width(),self.screen.get_height() - self.temps.getImageSaison().get_height())) for i,c in enumerate(typeBatiment): x = self.recBatiment.x + i* self.rectBatimentimage.get_width() / 6 @@ -131,6 +164,7 @@ class Game: r = pygame.rect.Rect(x,y,c.iconStatic.get_width() + 20 ,c.iconStatic.get_height()+ 30 ) self.screen.blit(c.textStatic, (x,y)) self.screen.blit(c.iconStatic,(x,y + c.textStatic.get_height())) + #Si la souris est dessus on affichage d'un rectangle if ( (r.collidepoint(pygame.mouse.get_pos()))): pygame.draw.rect(self.screen,(138, 227, 237), r,1) self.screen.blit(c.textDescriptionStatic,(self.recInformation.x,self.recInformation.y)) @@ -139,38 +173,38 @@ class Game: isChamp = False - isbatiment = False - + #Compteur défilant de l'argent if self.money < self.displayMoney: self.displayMoney -= min(444, self.displayMoney - self.money) # Si quelque chose coûte moins que 100, changer par -= min(100, self.displayMoney - self.money) elif self.money > self.displayMoney: self.displayMoney+= min(444, self.money - self.displayMoney) # Si quelque chose coûte moins que 100, changer par -= min(100, self.money - self.displayMoney) - - #self.displayMoney = self.money - + #variable money textMoney = police.render(str(self.displayMoney), True, (255,255,255)) + #Variable pour la notif de perte/obtention d'argent self.CoRecArgent = pygame.rect.Rect(self.screen.get_width(), 0, 100, 100) self.recArgent = pygame.draw.rect(self.screen,(255,0,0),(self.CoRecArgent)) self.screen.blit(textMoney, (self.screen.get_width() - self.imageMoney.get_width() - textMoney.get_width(),self.imageMoney.get_height()/2)) self.screen.blit(self.imageMoney, (self.screen.get_width() - self.imageMoney.get_width() , 0)) - + #Boucle pour chaque action de l'utilisateur for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: exit() #Deplacement de la souris elif event.type == pygame.MOUSEMOTION: - #drag and drop + interface des batiment et plantation + if event.buttons[2] == 1: #maintenir enfoncé clic droit self.camera.setPosition(np.array(event.rel)) - + #drag and drop + #Pour l'item qui se deplace if event.buttons[0] == 1:#maintenir enfoncé clic gauche if self.dragBatiment == None and self.dragPlantation == None: + #Boucle pour suivre la souris for i,c in enumerate(typeBatiment): x = self.recBatiment.x + i* self.rectBatimentimage.get_width() / 6 y = self.recBatiment.y + 50 @@ -180,9 +214,9 @@ class Game: if(self.dragBatiment): self.screen.blit(self.dragBatiment.iconStatic, (event.pos)) - - if self.dragPlantation == None and self.dragBatiment == None: - + + if self.dragPlantation == None and self.dragBatiment == None: #POur empecher de prendre 2 items en drag + #Boucle pour suivre la souris for i,c in enumerate(typePlantation): x = self.rectPlantation.x + ( 0 if i%2 else 170) @@ -196,13 +230,16 @@ class Game: else: + #Pour un item plantation pris if self.dragPlantation: for champ in self.champs: if champ.rectScale.collidepoint(event.pos): if self.dragPlantation == Pesticide: champ.isInfeste = False + #Si l'emplacement est un champs libre elif isinstance(champ,TerrainVide): + #creation du nouvel objet dropé newChamp = self.dragPlantation(champ.pos) self.champs.append(newChamp) newChamp.setInformation("Occupe" ,"Champ occupé") @@ -215,15 +252,17 @@ class Game: self.moneyDefile(-variable) - + #Pour un item plantation pris if self.dragBatiment: for champ in self.champs: if champ.rectScale.collidepoint(event.pos): if isinstance(champ,TerrainVide) or type(champ) in typePlantation: + #Creation du nouvel objet newBat = self.dragBatiment(champ.pos) self.batiment.append(newBat) champ.isbat = newBat + #Ajout des informations dans le rectangle information newBat.setInformation("Occupe", "Espace occupé") newBat.setInformation("Nom","Emplacement pour"+str(self.dragBatiment.NameObjet)) newBat.setInformation("coutEntretien","117€ d'entretien mensuel ") @@ -234,40 +273,36 @@ class Game: self.moneyDefile(-variable) self.nombreBatiments += 1 - + #Exception où le non supprime pas le champs derrière if self.dragBatiment not in [Torche,Serre,Irrigation,IrrigationGoutte]: self.champs.remove(champ) self.nombreChamps -= 1 - + #Réinitialisation des pointeurs self.dragPlantation = None self.dragBatiment = None - + #Boucle pour définir l'endroit comme un champ for champ in self.champs + self.batiment: if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): self.selectedChamp = champ - self.selectedBatiment = champ isChamp = True - isbatiment = True - + if not isChamp: self.selectedChamp = None - if not isbatiment: - self.selectedBatiment = None - + #Remettre l'image fleche tour suivant par défaut quand on enlève la souris de la hitbox if (*event.pos,0,0) in self.recTourSuivant: self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (200, 200)) else: self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (100, 100)) - + #Pour zoomer elif event.type == pygame.MOUSEWHEEL: self.camera.zoomInOut(event.y) @@ -282,13 +317,10 @@ class Game: #Code qui implemente la variation du pourcentage des plantes - #Vérification de la construction de batiment d'eau quand il fait chaud avec different cas - #self.ChangePourcentFanne(Serre,["orage"],2) + self.ChangePourcentFanne(Serre,["orage"],2) + #Action si la saison est été if (self.temps.currentSeason == "été"): - #self.ChangePourcentFanne(ReservoirEau,["canicule","secheresse"],20,"chaud",10), for bat in self.batiment: - print("batiment reconnu") - print("len batiment : "+ str(self.batiment)) if (type(bat) == ReservoirEau): self.ChangePourcentFanne(ReservoirEau,["canicule","secheresse"],5,"chaud",2) elif(type(bat) == Puit): @@ -296,43 +328,38 @@ class Game: elif(type(bat) == Irrigation): self.ChangePourcentFanne(Irrigation,["canicule","secheresse"],10,"chaud",5) elif(type(bat) == IrrigationGoutte): - self.ChangePourcentFanne(irrigationGoutte,["canicule","secheresse"],5,"chaud",2) + self.ChangePourcentFanne(IrrigationGoutte,["canicule","secheresse"],5,"chaud",2) + #Si il y a aucun batiment if(len(self.batiment) == 0): - print("pas de batiment") for champ in self.champs: champ.pourcentagePlanteFane += 20 champ.setInformation(hash('fane'),champ.pourcentagePlanteFane) - + #Action si la saison est automne elif (self.temps.currentSeason == "Automne"): - #self.ChangePourcentFanne(Serre,["neige","froid"],20) for bat in self.batiment: if (type(bat) == Serre): self.ChangePourcentFanne(Serre,["neige","froid"],5) elif(type(bat) == Puit): self.ChangePourcentFanne(Torche,["neige","froid"],10) + #Si il y a aucun batiment if(len(self.batiment) == 0): - print("pas de batiment") for champ in self.champs: champ.pourcentagePlanteFane += 15 champ.setInformation(hash('fane'),champ.pourcentagePlanteFane) - + #Action si la saison est hiver elif (self.temps.currentSeason == "Hiver"): self.AideEtat() - #self.ChangePourcentFanne(Serre,["neige","froid"],30) for bat in self.batiment: if (type(bat) == Serre): self.ChangePourcentFanne(Serre,["neige","froid"],5) elif(type(bat) == Puit): self.ChangePourcentFanne(Torche,["neige","froid"],10) if(len(self.batiment) == 0): - print("pas de batiment") for champ in self.champs: champ.pourcentagePlanteFane += 15 champ.setInformation(hash('fane'),champ.pourcentagePlanteFane) - - #Ajouter torche est faire une hiérarchie + #Action si la saison est printemps elif(self.temps.currentSeason == "Printemps"): - #self.ChangePourcentFanne(ReservoirEau,["chaud"],15) for bat in self.batiment: if (type(bat) == ReservoirEau): self.ChangePourcentFanne(ReservoirEau,["chaud"],2) @@ -341,14 +368,14 @@ class Game: elif(type(bat) == Irrigation): self.ChangePourcentFanne(Irrigation,["chaud"],5) elif(type(bat) == IrrigationGoutte): - self.ChangePourcentFanne(irrigationGoutte,["chaud"],2) + self.ChangePourcentFanne(IrrigationGoutte,["chaud"],2) + #Si il y a aucun batiment if(len(self.batiment) == 0): - print("pas de batiment") for champ in self.champs: champ.pourcentagePlanteFane += 15 champ.setInformation(hash('fane'),champ.pourcentagePlanteFane) - + #Boucle pour verifier si la plante est infecté par les verres for champ in self.champs: if type(champ) in typePlantation: if champ.isInfeste: @@ -356,12 +383,10 @@ class Game: self.VerifPlantFane(champ) if(random.random()< 0.10): champ.isInfeste = True - + + #verification de la durée de vie des batiments for bat in self.batiment: - print("passe ici") - print(type(bat)) if(bat.verifDureeVie()): - print("changer") self.champs.append(TerrainVide(bat.pos)) self.batiment.remove(bat) @@ -370,7 +395,7 @@ class Game: #click sur un champ if champ.rectScale.collidepoint(event.pos): - #Vente des plantes + #Vente des plantes if(champ.indiceImage > 3): self.champs.append(TerrainVide(champ.pos)) self.champs.remove(champ) @@ -392,33 +417,45 @@ class Game: if self.frame < self.buyFrame + 20: self.screen.blit(self.moneyChange, (self.screen.get_width() - self.imageMoney.get_width() - textMoney.get_width(), (self.frame-self.buyFrame)*1.5)) - #self.screen.blit(self.moneyChange, (200, self.screen.get_height()-textMoney.get_height()*4+(self.frame-self.buyFrame)*1.5)) - - if self.selectedChamp and self.selectedBatiment: + + #Pour le champ selectionnée afficher les infos dans le rectangle information + if self.selectedChamp: self.selectedChamp.showInfo(self.screen,self.recInformation) - self.selectedBatiment.showInfo(self.screen,self.recInformation) pygame.display.update() self.clock.tick(50) self.frame += 1 + """ + @nom = moneyDefile : Fonction : additionne/soustrait l'argent du joueur + @param : montant : int : montant additionné/soustrait de l'argent du joueur + @return : void + @Description : + Fonction : additionne/soustrait l'argent du joueur + """ def moneyDefile(self,montant): self.moneyChange = police.render(str(montant), True, (200,0,0) if montant < 0 else (0,250,0) ) self.buyFrame = self.frame self.money+= montant + """ + @nom = AideEtat : Fonction : Ajoute de l'argent + @param : + @return : void + @Description : + Simule les aides de l'état aux agriculteurs + """ def AideEtat(self): self.moneyDefile(5000) + """ + @nom = ChangePourcentFanne : Fonction : Ajoute de l'argent + @param : + @return : void + @Description : + Simule les aides de l'état aux agriculteurs + """ def ChangePourcentFanne(self,infra,case1,augmentation1, case2 = "",augmentation2 = 0): - print("fonction rentrer avec : ") - print(case1) - print(case2) - print("compare avec : "+ str(self.temps.currentTempsName) +" et les cas : "+str(case1)) - print("rentre dans le premier if batiment : "+str(not (infra in [type(bat) for bat in self.batiment]))) - print("chaud" in ["chaud","secheresse"]) - print(self.temps.currentTempsName) if not (infra in [type(bat) for bat in self.batiment]): - print(self.temps.currentTempsName in case1) if(self.temps.currentTempsName in case1): for champ in self.champs: champ.pourcentagePlanteFane += augmentation1 @@ -428,13 +465,26 @@ class Game: champ.pourcentagePlanteFane += augmentation2 champ.setInformation(hash('fane'),champ.pourcentagePlanteFane) - + """ + @nom = VerifPlantFane : Fonction : Verfie la plante si elle fane + @param : champ : Champs + @return : void + @Description : + Tir au sort un nombre entre 0 et 100, si le nombre tiré est inférieur au pourcentage de chance de fane de la plante, la plante fane + """ def VerifPlantFane(self,champ): nbrrandom = random.randint(0,100) if nbrrandom < champ.pourcentagePlanteFane: champ.indiceImage = 4 champ.plantationGrandit() + """ + @nom = VerifPlantFane : Fonction : Calcule le coût d'entretien mensuel + @param : champ : Champs + @return : void + @Description : + Calcule le coût d'entretien mensuel de chaque champs et batiment + """ def coutEntretien(self): cout = 0 # Entretien des batiments pendant 3 mois