From 6d8e74e42e58a08e651c42ac7e9e7262084c349f Mon Sep 17 00:00:00 2001 From: Emir Sinanovic <esinanovic@unistra.fr> Date: Mon, 5 Dec 2022 17:28:55 +0100 Subject: [PATCH] bouton tour suivant finit + affichage next run des temperature --- src/Game.py | 29 +++++++++++++++++-------- src/Temps.py | 61 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 64 insertions(+), 26 deletions(-) diff --git a/src/Game.py b/src/Game.py index ea5a538..14151fd 100755 --- a/src/Game.py +++ b/src/Game.py @@ -34,10 +34,11 @@ class Game: self.frame = 0 self.buyFrame = -1000 - self.tourSuivant = self.image.arrowNextImage - self.tourSuivant = pygame.transform.scale(self.tourSuivant, (100,100)) - self.coordonneeSuite = self.screenSize[0]-self.tourSuivant.get_width() - 120, self.screenSize[1] - self.tourSuivant.get_height() - 120 + 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) + 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()) @@ -67,8 +68,12 @@ class Game: # Météo self.screen.blit(self.temps.getImageSaison(), (0, self.screen.get_height() - 300)) - self.screen.blit(self.temps.image,(10,self.screen.get_height() - self.temps.image.get_height())) - self.screen.blit(self.temps.temperatureImage,(10,self.screen.get_height() - self.temps.image.get_height() - 50)) + 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)) + + 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())) + #Onglet plantation @@ -76,7 +81,8 @@ class Game: #Onglet tour suivant pygame.draw.rect(self.screen,(0, 127, 0),(self.recTourSuivant)) - self.screen.blit(self.tourSuivant, (self.screen.get_width() - 120, self.screen.get_height() - 120)) + 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)) for i,c in enumerate(typePlantation): x = self.rectPlantation.x + ( 0 if i%2 else 170) @@ -137,18 +143,22 @@ class Game: if not isChamp: self.selectedChamp = None - if (*event.pos,0,0) in self.suiteRectangle: - self.tourSuivant = pygame.transform.scale(self.tourSuivant, (120, 120)) + if (*event.pos,0,0) in self.recTourSuivant: + self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (200, 200)) else: - self.tourSuivant = pygame.transform.scale(self.tourSuivant, (100, 100)) + self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (100, 100)) + elif event.type == pygame.MOUSEWHEEL: self.camera.zoomInOut(event.y) # Achat d'un champ elif event.type == pygame.MOUSEBUTTONDOWN: + if event.button == 1: + if(self.recTourSuivant.collidepoint(event.pos)): + self.temps.NextTurn() for champ in self.champs: if isinstance(champ, Buisson): if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): @@ -158,6 +168,7 @@ class Game: self.champs.append(champ.buyField()) self.champs.remove(champ) self.money -= champ.prix + if self.frame < self.buyFrame + 20: diff --git a/src/Temps.py b/src/Temps.py index ab4f7d9..08647cb 100755 --- a/src/Temps.py +++ b/src/Temps.py @@ -1,9 +1,10 @@ import random import pygame from Image import transformImage +from random import triangular police = pygame.font.SysFont("Alef", 30) +police2 = pygame.font.SysFont("Alef", 20) class Temps: - # "humidité" est un pourcentage moyen """ climats = { @@ -81,24 +82,49 @@ class Temps: } def __init__(self): - self.currentSeason = "Printemps" + self.indice = 2 + self.currentSeason = self.getSaisonName(self.indice) self.globaltemp = self.tirageAuSortChiffreIntervalleTemp(self.currentSeason) self.humidite = self.tirageAuSortChiffreIntervallehumidite(self.currentSeason) - self.Temps = pygame.image.load(self.tempAAfficher()) - self.image = transformImage(self.Temps,200,200) - self.temperatureImage = police.render(self.currentSeason +" : "+ str(round(self.globaltemp,1))+" °C",True,(0,0,0)) + self.temps = pygame.image.load(self.tempAAfficher(self.globaltemp)) + 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.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)) for key,value in self.climats.items(): self.climats.get(key)['image'] = transformImage(pygame.image.load("../assets/"+key+".png"),400,300) - + + + def NextTurn(self): + #Le next qui devien current + self.indice += 1 + self.currentSeason = self.nextSaison + self.globaltemp = self.nextglobalTemps + self.humidite = self.nexthumidite + self.temps = self.nextTemps + self.iconSaison = self.nexticonSaison + 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.nexticonSaison = transformImage(self.nextTemps,100,100) - def randomTemp (self): - intervalleTemp = self.climats[self.currentSeason]["temp"] - return random.randint(*intervalleTemp) # *intervalleTemp = intervalleTemp[0], intervalleTemp[1] + self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSaison +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0)) - def randomHumidite (self): - intervalleHumidite = self.climats[self.currentSeason]["humidité"] - return random.randint(*intervalleHumidite) + + def getSaisonName(self,indice:int)->str: + return list(self.climats.keys())[indice%4] def tirageAuSortChiffreIntervalleTemp(self,clef): #tirage au sort pour avoir un nombre representatif dans son domaine; par exemple [0,10], la temp sera de 5 @@ -112,17 +138,18 @@ class Temps: randomNombre = random.random() * (intervalle[1]-intervalle[0]) + intervalle[0] return randomNombre - def tempAAfficher(self): + def tempAAfficher(self,temperature:float)-> str: #Determination du temps a afficher - if( self.globaltemp < 0): + if( temperature < 0): return "../assets/neige.png" - elif (self.globaltemp < 10): + elif (temperature < 10): return "../assets/froid.png" - elif (self.globaltemp < 35): + elif (temperature < 35): return "../assets/chaud.png" - elif (self.globaltemp > 35): + elif (temperature > 35): return "../assets/canicule.png" + def getClimatTemp(self,clef): return self.climats[clef]["temp"] -- GitLab