From 3ef9b85c03161f746599760e8fe945f4415f68ea Mon Sep 17 00:00:00 2001 From: Emir Sinanovic <esinanovic@unistra.fr> Date: Wed, 14 Dec 2022 16:37:03 +0100 Subject: [PATCH] Rectification systeme du temps+ saison --- assets/Interface/money.webp | Bin 0 -> 25722 bytes assets/Temps/ensoleillee.png | Bin 0 -> 3720 bytes src/Champs.py | 77 ++++++++++++-------------- src/Game.py | 25 ++++----- src/Image.py | 2 +- src/Infrastructure.py | 3 -- src/Plantation.py | 3 -- src/Temps.py | 101 +++++++++++++++++++---------------- 8 files changed, 99 insertions(+), 112 deletions(-) create mode 100644 assets/Interface/money.webp create mode 100644 assets/Temps/ensoleillee.png mode change 100755 => 100644 src/Champs.py mode change 100755 => 100644 src/Game.py delete mode 100644 src/Plantation.py diff --git a/assets/Interface/money.webp b/assets/Interface/money.webp new file mode 100644 index 0000000000000000000000000000000000000000..638cb88455852ec8afdbbbf12070a645d79cb3ed GIT binary patch literal 25722 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 literal 0 HcmV?d00001 diff --git a/assets/Temps/ensoleillee.png b/assets/Temps/ensoleillee.png new file mode 100644 index 0000000000000000000000000000000000000000..75e3024948bf6bed7af9f10eefdae966cdcbbbc4 GIT binary patch literal 3720 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 literal 0 HcmV?d00001 diff --git a/src/Champs.py b/src/Champs.py old mode 100755 new mode 100644 index 2302bfa..480c898 --- a/src/Champs.py +++ b/src/Champs.py @@ -3,15 +3,17 @@ import numpy as np from Temps import * from Image import transformImage -listeImage = [pygame.transform.scale(pygame.image.load('../assets/Plantation/crop'+str(i)+'phase.png'),(120,120)) for i in range(1,5)] - +listeImage = [transformImage(pygame.image.load('../assets/Plantation/crop'+str(i)+'phase.png'), 120, 120) for i in range(1,5)] +iconStaticSize = (100,100) #TODO : mettre une proba que les plantes meurent si il fait trop froid/chaud, et baisser cette proba de mourir avec une serre ou des torche pour l'hiver class Champs: - iconInsecteStatic = pygame.transform.scale(pygame.image.load("../assets/Plantation/leech.png"),(90,90)) + def __init__ (self, temperature, humidite, tempsAvantMaturation, pos, image): + self.PourcentagePlanteFane = 10 + self.temperature = temperature self.humidite = humidite self.TAM = tempsAvantMaturation @@ -25,40 +27,32 @@ class Champs: self.indiceImage = 0 self.champZoom = pygame.rect.Rect(self.pos,self.imgZoom.get_rect().size) self.isInfeste = False + self.descripteurChamps = { - "Temperature" : None, - "Humidite" : None, - "Acidite" : None, "Occupe" : None, + #"Nom" : None + } + self.imageSurfaceinfo = { - "Temperature" : None, - "Humidite" : None, - "Acidite" : None, "Occupe" : None, + #"Nom" : None } - self.setInformation("Temperature",self.temperature) - self.setInformation("Humidite", self.humidite) - self.setInformation("Acidite",0) - self.setInformation("Occupe", False) - + + self.setInformation("Occupe", "Non") + #self.setInformation("Nom",self.) def plantationGrandit(self): - self.indiceImage +=1 - if self.indiceImage <4: - + self.indiceImage += 1 + if self.indiceImage < 4: self.imageChamp = listeImage[self.indiceImage] else: if(self.indiceImage == 4): - self.imageChamp =pygame.transform.scale(pygame.image.load('../assets/Plantation/damage.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/damage.png'), 120, 120) elif(self.indiceImage == 5): self.isInfeste = False - self.imageChamp =pygame.transform.scale(pygame.image.load('../assets/Plantation/fanne.png'),(120,120)) - - - - + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/fanne.png'), 120, 120) def draw (self, screen, camera): @@ -87,7 +81,7 @@ class Champs: (self.rectScale.h-self.rectChampScal.h) /2) ) - self.setInformation("Occupe", True) + self.setInformation("Occupe", "Oui") if(self.isInfeste): scaleInfecte = camera.scaleImage(Champs.iconInsecteStatic) @@ -112,9 +106,6 @@ class Champs: if scaleText: self.zoomText = scaleText - def setInformation(self,clef,valeur): - self.descr - def setInformation(self,clef,valeur): self.descripteurChamps[clef] = valeur self.imageSurfaceinfo[clef] = police.render(clef+ " : "+ str(valeur),False,(0,0,0)) @@ -152,7 +143,7 @@ class TerrainVide(Champs): class Houblon (Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/houblon.png'),(150,150)) + 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 @@ -162,11 +153,11 @@ class Houblon (Champs): self.text = self.police.render("Température : " + str(self.temperature), False, (0,0,0)) self.zoomText = self.text - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class Ble (Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/wheat.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/wheat.png'), *iconStaticSize) textStatic = police.render('Ble',False, (0,0,0)) textDescriptionStatic = police.render("Ble sa marche bien",False,(0,0,0)) montantAchat = 250 @@ -174,43 +165,43 @@ class Ble (Champs): def __init__ (self,pos): super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class Malt (Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/malt.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/malt.png'), *iconStaticSize) textStatic = police.render('Malt',False, (0,0,0)) textDescriptionStatic = police.render("Malt sa marche bien",False,(0,0,0)) montantAchat = 300 montantVente = 800 def __init__ (self,pos): super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class Chanvre(Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/weed.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/weed.png'), *iconStaticSize) textStatic = police.render("Chanvre",False, (0,0,0)) textDescriptionStatic = police.render("Pour des spaces bières",False,(0,0,0)) montantAchat = 1000 montantVente = 5000 def __init__ (self,pos): - super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + super().__init__(0,0,0,pos,'../assets//Plantation/champ.png') + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class OrgeHiver(Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/orge.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/orge.png'), *iconStaticSize) textStatic = police.render("Orge hiver",False, (0,0,0)) textDescriptionStatic = police.render("Orge hiver sa marche bien",False,(0,0,0)) montantAchat = 300 montantVente = 800 def __init__ (self,pos): super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class OrgePrintemps(Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/OrgePrintemps.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/OrgePrintemps.png'), *iconStaticSize) textStatic = police.render("Orge printemps",False, (0,0,0)) textDescriptionStatic = police.render("Orge printemps sa marche bien",False,(0,0,0)) montantAchat = 500 @@ -218,22 +209,22 @@ class OrgePrintemps(Champs): def __init__ (self,pos): super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class Seigle(Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/seigle.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/seigle.png'), *iconStaticSize) textStatic = police.render("Seigle",False, (0,0,0)) textDescriptionStatic = police.render("Seigle sa marche bien",False,(0,0,0)) montantAchat = 200 montantVente = 600 def __init__ (self,pos): super().__init__(0,0,0,pos,'../assets/Plantation/champ.png') - self.imageChamp = pygame.transform.scale(pygame.image.load('../assets/Plantation/crop1phase.png'),(120,120)) + self.imageChamp = transformImage(pygame.image.load('../assets/Plantation/crop1phase.png'), 120, 120) class Pesticide(Champs): - iconStatic = pygame.transform.scale(pygame.image.load('../assets/Plantation/pesticide.png'),(150,150)) + iconStatic = transformImage(pygame.image.load('../assets/Plantation/pesticide.png'), *iconStaticSize) textStatic = police.render("Pesticide",False, (0,0,0)) textDescriptionStatic = police.render("Pour tuer les insectes",False,(0,0,0)) montantAchat = 200 diff --git a/src/Game.py b/src/Game.py old mode 100755 new mode 100644 index d8836e2..9f44513 --- a/src/Game.py +++ b/src/Game.py @@ -1,11 +1,11 @@ import pygame import random -from Champs import Champs,Houblon,Buisson,TerrainVide,Pesticide,typePlantation +from Champs import * import numpy as np from Camera import Camera -from Image import transformImage,Image +from Image import * from Temps import Temps -from Infrastructure import Infrastructure,typeBatiment,Serre,Torche +from Infrastructure import * RAYON_MUR_INVISIBLE = 2000 SAISONS = ["Printemps", "Été", "Automne", "Hiver"] @@ -34,7 +34,7 @@ class Game: self.clock = pygame.time.Clock() self.selectedChamp = None - self.imageMoney = pygame.transform.scale(self.image.moneyImage, np.array(self.image.moneyImage.get_size())/2) + 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) @@ -92,9 +92,7 @@ class Game: self.screen.blit(self.temps.nexticonSaison,(self.temps.getImageSaison().get_width() - self.temps.nexticonSaison.get_width(),self.screen.get_height() - self.temps.getImageSaison().get_height() +20)) self.screen.blit(self.temps.tempsaisonImageDeuxPosiiton,(self.temps.getImageSaison().get_width() - self.temps.nexticonSaison.get_width(),self.screen.get_height() - self.temps.getImageSaison().get_height())) - - print(self.rectPlantation.w) - print(self.rectPlantation.h) + #Onglet plantation self.screen.blit(self.rectPlantationimage,(0,0)) @@ -105,15 +103,14 @@ class Game: for i,c in enumerate(typePlantation): x = self.rectPlantation.x + ( 0 if i%2 else 170) - y = self.rectPlantation.y + (i//2) * 200 - r = pygame.rect.Rect(x,y,c.iconStatic.get_width(),c.iconStatic.get_height()+ 30 ) + y = self.rectPlantation.y + (i//2) * 140 + 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+30 )) + self.screen.blit(c.iconStatic,(x,y+20 )) 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)) #self.screen.blit(self.text,(screen.get_width()*0.85,screen.get_height()*0.18)) - @@ -133,8 +130,6 @@ class Game: isChamp = False - - # if self.money < self.displayMoney: @@ -179,7 +174,7 @@ class Game: for i,c in enumerate(typePlantation): x = self.rectPlantation.x + ( 0 if i%2 else 170) - y = self.rectPlantation.y + (i//2) * 200 + y = self.rectPlantation.y + (i//2) * 140 r = pygame.rect.Rect(x,y,c.iconStatic.get_width() + 20 ,c.iconStatic.get_height()+ 30 ) if ( (r.collidepoint(event.pos))): self.dragPlantation = c @@ -288,7 +283,7 @@ class Game: if self.frame < self.buyFrame + 20: - self.screen.blit(self.moneyChange, (self.screen.get_width() -200, (self.frame-self.buyFrame)*1.5)) + 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: diff --git a/src/Image.py b/src/Image.py index 3c78181..ae9a662 100644 --- a/src/Image.py +++ b/src/Image.py @@ -6,7 +6,7 @@ class Image: self.screen = screen # Chargement des images - self.moneyImage = pygame.image.load("../assets/Interface/money.png") + self.moneyImage = pygame.image.load("../assets/Interface/money.webp") self.backgroundImage = pygame.image.load("../assets/Interface/terre.png") self.rainImage = pygame.image.load("../assets/Temps/pluie.png") self.arrowNextImage = pygame.image.load("../assets/Interface/suite.png") diff --git a/src/Infrastructure.py b/src/Infrastructure.py index 08cc96d..2e1dfba 100644 --- a/src/Infrastructure.py +++ b/src/Infrastructure.py @@ -47,9 +47,6 @@ class Infrastructure: (self.rectScale.h-self.rectbatScal.h) /2) ) - - - def changeText (self, camera): scaleText = camera.scaleImage(self.text) diff --git a/src/Plantation.py b/src/Plantation.py deleted file mode 100644 index 33cc374..0000000 --- a/src/Plantation.py +++ /dev/null @@ -1,3 +0,0 @@ -class Plantation: - - def __init__ (self): \ No newline at end of file diff --git a/src/Temps.py b/src/Temps.py index 33046d0..ce2dde1 100755 --- a/src/Temps.py +++ b/src/Temps.py @@ -4,16 +4,14 @@ from Image import transformImage from random import triangular police = pygame.font.SysFont("Alef", 30) police2 = pygame.font.SysFont("Alef", 20) -class Temps: - """ - climats = { - - "janvier" : { - "temp" : [2,7.8], - "humidité" : [78,90] - }, - "février" : { +""" +climats = { + "janvier" : { + "temp" : [2,7.8], + "humidité" : [78,90] + }, + "février" : { "temp" : [4.5,11.8], "humidité" : [60,85] }, @@ -59,15 +57,16 @@ class Temps: } } - """ - +""" + +class Temps: climats = { "Automne" : { "temp" : [4.8,13.3], "humidité" : [70,95] }, - "Hiver" : { + "Hiver" : { "temp" : [-5,10.3], "humidité" : [50,90] }, @@ -82,31 +81,34 @@ class Temps: } def __init__(self): + self.ListTemps = ["neige","orage","pluie","ensoleillee","vent","secheresse","canicule","froid","chaud"] + self.indice = 2 self.currentSeason = self.getSaisonName(self.indice) - self.globaltemp = self.tirageAuSortChiffreIntervalleTemp(self.currentSeason) + self.globaltemp = self.tirageTemperature(self.currentSeason) self.humidite = self.tirageAuSortChiffreIntervallehumidite(self.currentSeason) - self.temps = pygame.image.load(self.tempAAfficher(self.globaltemp,self.humidite)) + self.temps = pygame.image.load(self.tempAAfficher(self.currentSeason,self.tirageTemps())) self.iconSaison = transformImage(self.temps,200,200) - self.nextSaison = self.getSaisonName(self.indice+1) - self.nextglobalTemps = self.tirageAuSortChiffreIntervalleTemp(self.nextSaison) - self.nexthumidite = self.tirageAuSortChiffreIntervallehumidite(self.nextSaison) - self.nextTemps = pygame.image.load(self.tempAAfficher(self.nextglobalTemps,self.nexthumidite)) + self.nextSeason = self.getSaisonName(self.indice+1) + self.nextglobalTemps = self.tirageTemperature(self.nextSeason) + self.nexthumidite = self.tirageAuSortChiffreIntervallehumidite(self.nextSeason) + self.nextTemps = pygame.image.load(self.tempAAfficher(self.nextSeason,self.tirageTemps())) self.nexticonSaison = transformImage(self.nextTemps,100,100) self.tempsaisonImage = police.render(self.currentSeason +" : "+ str(round(self.globaltemp,1))+" °C",True,(0,0,0)) - - self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSaison +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0)) + + + self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSeason +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0)) for key,value in self.climats.items(): self.climats.get(key)['image'] = transformImage(pygame.image.load("../assets/Saison/"+key+".png"),400,300) - self.ListTemps = [] + def NextTurn(self): #Le next qui devien current self.indice += 1 - self.currentSeason = self.nextSaison + self.currentSeason = self.nextSeason self.globaltemp = self.nextglobalTemps self.humidite = self.nexthumidite self.temps = self.nextTemps @@ -114,20 +116,18 @@ class Temps: self.tempsaisonImage = police.render(self.currentSeason +" : "+ str(round(self.globaltemp,1))+" °C",True,(0,0,0)) #Nouveau turn - self.nextSaison = self.getSaisonName(self.indice+1) - self.nextglobalTemps = self.tirageAuSortChiffreIntervalleTemp(self.nextSaison) - self.nexthumidite = self.tirageAuSortChiffreIntervallehumidite(self.nextSaison) - self.nextTemps = pygame.image.load(self.tempAAfficher(self.nextglobalTemps,self.nexthumidite)) + self.nextSeason = self.getSaisonName(self.indice+1) + self.nextglobalTemps = self.tirageTemperature(self.nextSeason) + self.nexthumidite = self.tirageAuSortChiffreIntervallehumidite(self.nextSeason) + self.nextTemps = pygame.image.load(self.tempAAfficher(self.currentSeason,self.tirageTemps())) self.nexticonSaison = transformImage(self.nextTemps,100,100) - - self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSaison +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0)) - + self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSeason +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0)) def getSaisonName(self,indice:int)->str: return list(self.climats.keys())[indice%4] - def tirageAuSortChiffreIntervalleTemp(self,clef): + def tirageTemperature(self,clef): #tirage au sort pour avoir un nombre representatif dans son domaine; par exemple [0,10], la temp sera de 5 intervalle = self.getClimatTemp(clef) @@ -144,25 +144,32 @@ class Temps: #randomNombre = random.random() * (intervalle[1]-intervalle[0]) + intervalle[0] return random.triangular(low = intervalle[0],high = intervalle[1]) - def tempAAfficher(self,temperature:float,humidite)-> str: - #Determination du temps a afficher - if( temperature < 0 and humidite >80): - return "../assets/Temps/neige.png" - elif (temperature < 10): - return "../assets/Temps/froid.png" - elif (temperature < 35): - return "../assets/Temps/chaud.png" - elif (temperature > 34): - if(humidite > 85): - return "../assets/Temps/orage.png" - - if(humidite < 65): - return "../assets/Temps/secheresse.png" - else: - return "../assets/Temps/canicule.png" + def tirageTemps(self): + nbrandom = random.randint(0,len(self.ListTemps)-1) + print("nbrandom"+ str(nbrandom)) + print(self.ListTemps[nbrandom]) + return self.ListTemps[nbrandom] + + def tempAAfficher(self, saison,temps:str)-> str: + #Determination du temps a afficher + + if saison == "Automne" and temps not in ["secheresse","canicule","chaud"]: + print("Automne") + return str("../assets/Temps/"+temps+".png") + elif saison == "Hiver" and temps not in ["secheresse","canicule","chaud"]: + print("rentrer hiver") + return str("../assets/Temps/"+temps+".png") + elif saison == "Printemps" and temps not in ["secheresse","canicule","neige"]: + print("Printemps") + return str("../assets/Temps/"+temps+".png") + elif saison == "été" and temps not in ["froid","neige"]: + print("été") + return str("../assets/Temps/"+temps+".png") else: - pass + return self.tempAAfficher(saison,self.tirageTemps()) + + def getClimatTemp(self,clef): return self.climats[clef]["temp"] -- GitLab