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