From c0f729eeca5718fc9eb252ec28dc024817c28335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Duchmann?= <l.duchmann@etu.unistra.fr> Date: Fri, 25 Nov 2022 10:33:24 +0100 Subject: [PATCH] Modifications de la structure du projet --- "L\303\251o/Camera.py" | 0 "L\303\251o/Champs.py" | 4 +-- "L\303\251o/Game.py" | 77 ++++++++++++++++++++++++------------------ "L\303\251o/Image.py" | 23 +++++++++++++ "L\303\251o/T3.py" | 5 ++- "L\303\251o/Temps.py" | 46 +++++++++++++++++-------- 6 files changed, 104 insertions(+), 51 deletions(-) mode change 100755 => 100644 "L\303\251o/Camera.py" mode change 100755 => 100644 "L\303\251o/Champs.py" mode change 100755 => 100644 "L\303\251o/Game.py" create mode 100644 "L\303\251o/Image.py" mode change 100755 => 100644 "L\303\251o/T3.py" mode change 100755 => 100644 "L\303\251o/Temps.py" diff --git "a/L\303\251o/Camera.py" "b/L\303\251o/Camera.py" old mode 100755 new mode 100644 diff --git "a/L\303\251o/Champs.py" "b/L\303\251o/Champs.py" old mode 100755 new mode 100644 index 71bac78..416ebaa --- "a/L\303\251o/Champs.py" +++ "b/L\303\251o/Champs.py" @@ -35,7 +35,7 @@ class Houblon (Champs): self.zoomText = self.text def showInfo (self, screen, camera): - pygame.draw.rect(screen, (255, 255, 255), pygame.rect.Rect(camera.convertLocation(self.pos), np.array(self.rect.size)*0.75*abs(camera.zoom))) + #pygame.draw.rect(screen, (255, 255, 255), pygame.rect.Rect(camera.convertLocation(self.pos), np.array(self.rect.size)*0.75*abs(camera.zoom))) self.changeText(camera) screen.blit(self.zoomText, camera.convertLocation(self.pos)) @@ -48,7 +48,7 @@ class Buisson (Champs): self.zoomText = self.text def showInfo (self, screen, camera): - pygame.draw.rect(screen, (255, 255, 255), pygame.rect.Rect(camera.convertLocation(self.pos), np.array(self.rect.size)*0.75*abs(camera.zoom))) + #pygame.draw.rect(screen, (255, 255, 255), pygame.rect.Rect(camera.convertLocation(self.pos), np.array(self.rect.size)*0.75*abs(camera.zoom))) self.changeText(camera) screen.blit(self.zoomText, camera.convertLocation(self.pos)) diff --git "a/L\303\251o/Game.py" "b/L\303\251o/Game.py" old mode 100755 new mode 100644 index d5e1235..64afc82 --- "a/L\303\251o/Game.py" +++ "b/L\303\251o/Game.py" @@ -2,66 +2,72 @@ import pygame from Champs import * import numpy as np from Camera import * +from Image import * 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"] class Game: - def __init__ (self, screen): - self.screen = screen - self.screenSize = np.array(self.screen.get_size()) + def __init__ (self): + self.image = Image() + self.screenSize = np.array(self.image.screen.get_size()) self.score = 0 self.money = 10000 self.displayMoney = 10000 self.month = 0 - #self.champs = [Houblon((0,0)), Houblon((-200,0)), Houblon((0,-200)), Buisson((400,0)), Buisson((0,400)), Houblon((1000,1000))]#Houblon((100,100)), Houblon((400,100)), Houblon((700,100)), Houblon((100,300)), Houblon((400,300)), Houblon((700,300)), Houblon((100,500)), Houblon((400,500)), Buisson((700,500))] self.champs = [] for i in range(12): self.champs.append(Buisson(((i%4)*300-550,(i//4)*200-300))) self.clock = pygame.time.Clock() self.selectedChamp = None - self.imageMoney = pygame.image.load("../assets/money.png") - self.imageMoney = pygame.transform.scale(self.imageMoney, np.array(self.imageMoney.get_size())/3) + + self.imageMoney = pygame.transform.scale(self.image.moneyImage, np.array(self.image.moneyImage.get_size())/3) self.police = pygame.font.SysFont("Alef", 30) - self.camera = Camera(np.array(self.screen.get_size())/2) - self.background = pygame.image.load('../assets/terre.png') - self.background = pygame.transform.scale(self.background, (self.screen.get_width(), self.screen.get_height())) - self.pluie = pygame.image.load('../assets/pluie.png') - self.pluie = pygame.transform.scale(self.pluie, (200,200)) + self.camera = Camera(np.array(self.image.screen.get_size())/2) + + self.pluie = pygame.transform.scale(self.image.rainImage, (200,200)) self.frame = 0 self.buyFrame = -1000 - self.grange = pygame.image.load('../assets/grange.webp') - self.grange = pygame.transform.scale(self.grange, (self.screen.get_width(), self.screen.get_height())) - self.flecheChangementdroite = pygame.image.load("../assets/flecheScene.png") - self.flecheChangementgauche = pygame.image.load("../assets/flecheScene2.png") + + self.flecheChangementdroite = self.image.arrowImage1 + self.flecheChangementgauche = self.image.arrowImage2 self.flecheChangementdroite = pygame.transform.scale(self.flecheChangementdroite, (100,100)) self.flecheChangementgauche = pygame.transform.scale(self.flecheChangementgauche, (100,100)) self.coordonnee_image_droite = self.screenSize[0]-self.flecheChangementdroite.get_width() - 10, self.screenSize[1]/2 self.coordonnee_image_gauche = 10, self.screenSize[1]/2 self.rectangle_button_fleche = pygame.rect.Rect(*self.coordonnee_image_droite,100,100) self.rectangle_button_fleche_gauche = pygame.rect.Rect(*self.coordonnee_image_gauche,100,100) + + 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.suiteRectangle = pygame.rect.Rect(*self.coordonneeSuite, 100, 100) def gameLoop (self): while True: - self.screen.blit(self.background, (0,0)) + self.image.screen.blit(self.image.backgroundImage, (0,0)) + + # Bouton suite + self.image.screen.blit(self.tourSuivant, (self.image.screen.get_width() - 120, self.image.screen.get_height() - 120)) # Météo - pygame.draw.rect(self.screen, (127, 127, 127), (0, self.screen.get_height() - 200, 200, 200)) - self.screen.blit(self.pluie, (0, self.screen.get_height() - 200)) + pygame.draw.rect(self.image.screen, (127, 127, 127), (0, self.image.screen.get_height() - 200, 200, 200)) + self.image.screen.blit(self.pluie, (0, self.image.screen.get_height() - 200)) # Saison surface = self.police.render(SAISONS[self.month%4], False, (0,0,0)) - self.screen.blit(surface, (0, self.screen.get_height() - surface.get_height())) + self.image.screen.blit(surface, (0, self.image.screen.get_height() - surface.get_height())) - isChamp = False + #isChamp = False # Affichage des champs for champ in self.champs: - champ.draw(self.screen, self.camera) + champ.draw(self.image.screen, self.camera) + champ.showInfo(self.image.screen, self.camera) # Affiche les fps fpsText = self.police.render(("%.0f fps" %(self.clock.get_fps())), True, (180,180,180)) - self.screen.blit(fpsText, (self.screen.get_width() - fpsText.get_width(), 0)) + self.image.screen.blit(fpsText, (self.image.screen.get_width() - fpsText.get_width(), 0)) if self.money < self.displayMoney: self.displayMoney -= 500 # Si quelque chose coûte moins que 100, changer par -= min(100, self.displayMoney - self.money) @@ -69,11 +75,11 @@ class Game: self.displayMoney += 500 # Si quelque chose coûte moins que 100, changer par -= min(100, self.money - self.displayMoney) textMoney = self.police.render(str(self.displayMoney), True, (255,255,255)) - pygame.draw.rect(self.screen, (0,0,0), (200, self.screen.get_height() - 50, 100, 50)) - self.screen.blit(textMoney, (200, self.screen.get_height()-30)) - self.screen.blit(self.imageMoney, (300, self.screen.get_height()-self.imageMoney.get_height())) + pygame.draw.rect(self.image.screen, (0,0,0), (200, self.image.screen.get_height() - 50, 100, 50)) + self.image.screen.blit(textMoney, (200, self.image.screen.get_height()-30)) + self.image.screen.blit(self.imageMoney, (300, self.image.screen.get_height()-self.imageMoney.get_height())) - self.screen.blit(self.flecheChangementdroite, self.coordonnee_image_droite) + self.image.screen.blit(self.flecheChangementdroite, self.coordonnee_image_droite) for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: @@ -86,13 +92,18 @@ class Game: if event.buttons[2] == 1: #maintenir enfoncé clic droit self.camera.setPosition(np.array(event.rel)) - for champ in self.champs: + """for champ in self.champs: if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): self.selectedChamp = champ isChamp = True if not isChamp: - self.selectedChamp = None + self.selectedChamp = None""" + + if (*event.pos,0,0) in self.suiteRectangle: + self.tourSuivant = pygame.transform.scale(self.tourSuivant, (120, 120)) + else: + self.tourSuivant = pygame.transform.scale(self.tourSuivant, (100, 100)) elif event.type == pygame.MOUSEWHEEL: self.camera.zoomInOut(event.y) @@ -114,10 +125,10 @@ class Game: if self.frame < self.buyFrame + 20: - self.screen.blit(self.moneyChange, (200, self.screen.get_height()-textMoney.get_height()*4-(self.frame-self.buyFrame)*1.5)) + self.image.screen.blit(self.moneyChange, (200, self.image.screen.get_height()-textMoney.get_height()*4-(self.frame-self.buyFrame)*1.5)) - if self.selectedChamp: - self.selectedChamp.showInfo(self.screen, self.camera) + """if self.selectedChamp: + self.selectedChamp.showInfo(self.image.screen, self.camera)""" pygame.display.update() self.clock.tick(50) @@ -125,8 +136,8 @@ class Game: def gameLoopSecondScreen (self): while True: - self.screen.blit(self.grange, (0,0)) - self.screen.blit(self.flecheChangementgauche, self.coordonnee_image_gauche) + self.image.screen.blit(self.image.barnImage, (0,0)) + self.image.screen.blit(self.flecheChangementgauche, self.coordonnee_image_gauche) for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: diff --git "a/L\303\251o/Image.py" "b/L\303\251o/Image.py" new file mode 100644 index 0000000..29ffde7 --- /dev/null +++ "b/L\303\251o/Image.py" @@ -0,0 +1,23 @@ +import pygame + +class Image: + def __init__ (self): + self.screen = pygame.display.set_mode((0,0), pygame.FULLSCREEN) + + # Chargement des images + self.moneyImage = pygame.image.load("../assets/money.png") + self.backgroundImage = pygame.image.load("../assets/terre.png") + self.rainImage = pygame.image.load("../assets/pluie.png") + self.barnImage = pygame.image.load("../assets/grange.webp") + self.arrowImage1 = pygame.image.load("../assets/flecheScene.png") + self.arrowImage2 = pygame.image.load("../assets/flecheScene2.png") + self.arrowNextImage = pygame.image.load("../assets/suite.png") + + # Modification de l'échelle des images + self.backgroundImage = self.setFullScreen(self.backgroundImage) + self.barnImage = self.setFullScreen(self.barnImage) + + def setFullScreen(self, image): + image = pygame.transform.scale(image, (self.screen.get_width(), self.screen.get_height())) + + return image \ No newline at end of file diff --git "a/L\303\251o/T3.py" "b/L\303\251o/T3.py" old mode 100755 new mode 100644 index 439895e..53a3358 --- "a/L\303\251o/T3.py" +++ "b/L\303\251o/T3.py" @@ -3,9 +3,12 @@ pygame.init() from datetime import date import Game +from Image import * + pygame.display.set_caption("Climate Simulator : Global Organization") screen = pygame.display.set_mode((0,0), pygame.FULLSCREEN) +image = Image() #on récupère le mois actuelle pour le faire commencer à ce moment class month: @@ -54,4 +57,4 @@ while inMenu: exit(0) # à l'appui du bouton start -Game.Game(screen).gameLoop() \ No newline at end of file +Game.Game().gameLoop() \ No newline at end of file diff --git "a/L\303\251o/Temps.py" "b/L\303\251o/Temps.py" old mode 100755 new mode 100644 index 7b93dcc..0570f70 --- "a/L\303\251o/Temps.py" +++ "b/L\303\251o/Temps.py" @@ -1,43 +1,53 @@ -import random - class Temps: + # "humidité" est un pourcentage moyen climats = { "janvier" : { - "temp" : [20,40], - "humidité" : [0,10] + "temp" : [2,7.8], + "humidité" : 81 }, "février" : { - + "temp" : [4.5,11.8], + "humidité" : 78 }, "mars" : { - + "temp" : [3.7,13.7], + "humidité" : 74 }, "avril" : { - + "temp" : [15.4,4.7], + "humidité" : 68 }, "mai" : { - + "temp" : [18.1,8.7], + "humidité" : 69 }, "juin" : { - + "temp" : [24.5,14.6], + "humidité" : 66 }, "juillet" : { - + "temp" : [24.9,15.5], + "humidité" : 65 }, "août" : { - + "temp" : [24.6,14.8], + "humidité" : 67 }, "septembre" : { - + "temp" : [24,14], + "humidité" : 72 }, "octobre" : { - + "temp" : [18.3,8.6], + "humidité" : 79 }, "novembre" : { - + "temp" : [11.3,4.9], + "humidité" : 84 }, "décembre" : { - + "temp" : [10.3,3.8], + "humidité" : 83 } } @@ -56,3 +66,9 @@ class Temps: intervalleHumidite = self.climats[self.currentMonth]["humidité"] return random.randint(*intervalleHumidite) + + def getClimatTemp(self,clef): + return climats[clef]["temp"] + + def getClimatHumidite(self,clef): + return climats[clef]["humidité"] \ No newline at end of file -- GitLab