diff --git a/Linux-Mac/README.md b/Linux-Mac/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..5d7be4c0418476ab896f288f94894c38464558bb
--- /dev/null
+++ b/Linux-Mac/README.md
@@ -0,0 +1,17 @@
+# Guide d'installation pour Linux et Mac :
+## Pré-requis
+
+- Avoir Python d'installé (testé sur les versions `3.9.1` et `3.9.2`)
+[Installer Python](https://www.python.org/downloads/)
+- Avoir pip d'installé
+[Installer pip](https://pypi.org/project/pip/)
+- Installer les dépendances
+`pip install -r requirements.txt`
+
+
+## Jouer au jeu
+
+```sh
+cd ../src/
+py T3.py
+```
\ No newline at end of file
diff --git a/Linux-Mac/requirements.txt b/Linux-Mac/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8f6c8437a8dae9d2e18ce527adaa394f0a6f94ee
--- /dev/null
+++ b/Linux-Mac/requirements.txt
@@ -0,0 +1 @@
+pygame==2.1.2
\ No newline at end of file
diff --git a/src/Champs.py b/src/Champs.py
index f0b810f53a1bd919f602eff07915852612293fe9..f301a31e38a550fc14ece33579b5fd293bfc1d06 100644
--- a/src/Champs.py
+++ b/src/Champs.py
@@ -2,17 +2,15 @@ import pygame
 import numpy as np
 from Temps import *
 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)
 
-#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.pourcentagePlanteFane = 10
 
         self.temperature = temperature
         self.humidite = humidite
@@ -27,20 +25,25 @@ class Champs:
         self.indiceImage = 0
         self.champZoom = pygame.rect.Rect(self.pos,self.imgZoom.get_rect().size)
         self.isInfeste = False
+        self.bat = None
+        #self.infra = self.setInfrastrcture(self.pos,self.image)
+
+
         
         self.descripteurChamps = {
-            "Occupe" : None,
-            #"Nom" : None
-
+        
         }
 
         self.imageSurfaceinfo = {
-            "Occupe" : None,
-            #"Nom" : None
+            
         }
-        
-        self.setInformation("Occupe", "Non")
-        #self.setInformation("Nom",self.)
+        self.setInformation("Occupe" , "Champ non occupé")
+        self.setInformation("Nom","Champ Vide ")
+        self.setInformation("coutEntretien","90€ coût d'entretien mensuel")
+        self.setInformation("fane", "Pourcentage que la plante fanne : ")
+        self.setInformation(hash('fane'), str(self.pourcentagePlanteFane)+' %')
+        self.setInformation("status", self.image,True)
+
 
 
     def plantationGrandit(self):
@@ -53,8 +56,10 @@ 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)
+    """
     def draw (self, screen, camera):
         scaleImage = camera.scaleImage(self.image)
 
@@ -80,8 +85,7 @@ class Champs:
                 varlongueur[1] + 
                 (self.rectScale.h-self.rectChampScal.h)
                 /2)
-            )
-            self.setInformation("Occupe", "Oui")  
+            ) 
 
         if(self.isInfeste):
             scaleInfecte = camera.scaleImage(Champs.iconInsecteStatic)
@@ -100,25 +104,24 @@ class Champs:
                 /2)
             )
             
-
     def changeText (self, camera):
         scaleText = camera.scaleImage(self.text)
         if scaleText:
             self.zoomText = scaleText
 
-    def setInformation(self,clef,valeur):
+    def setInformation(self,clef,valeur,isImage = False):
         self.descripteurChamps[clef] = valeur
-        self.imageSurfaceinfo[clef] = police.render(clef+ " :  "+ str(valeur),False,(0,0,0))
-
-    def showInfo(self,screen,rectangle):
+        if isImage : 
+            self.imageSurfaceinfo[clef] = valeur
+        else : 
+            self.imageSurfaceinfo[clef] = police.render(str(valeur),True,(0,0,0))
+        
+    def showInfo(self,screen,rectangle,bat = {}):
         i = 0
         for k,v in self.descripteurChamps.items():
             screen.blit(self.imageSurfaceinfo[k],(rectangle.x,rectangle.y + i))
             i += 30
 
-    def DeterminPourcentageFanage(self,montant):
-        self.probaFanage +=montant
-        
 
 class Buisson (Champs):
     def __init__ (self, pos, prix = 10000):
diff --git a/src/Game.py b/src/Game.py
index 9b8d185556bbcea7758d83aee3983a5bda4cd3f2..a233cab028b1412850c17204481a8161588f97f2 100644
--- a/src/Game.py
+++ b/src/Game.py
@@ -12,6 +12,11 @@ SAISONS = ["Printemps", "Été", "Automne", "Hiver"]
 MOIS = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]
 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
+
+
 class Game:
     imagestaticplantation = pygame.image.load('../assets/Interface/imagePlantation.jpeg')
     imagestaticbatiment = pygame.image.load('../assets/Interface/imageBatiment.jpeg')
@@ -24,7 +29,8 @@ class Game:
         self.money = 40000
         self.displayMoney = 40000
         self.month = 0
-
+        self.nombreBatiments = 0
+        self.nombreChamps = 0
         self.champs = []
         self.batiment = []
 
@@ -33,6 +39,7 @@ class Game:
             self.champs.append(Buisson(((i%4)*300-550,(i//4)*250-430)))
         self.clock = pygame.time.Clock()
         self.selectedChamp = None
+        self.selectedBatiment = None
 
         self.imageMoney = pygame.transform.scale(self.image.moneyImage, np.array(self.image.moneyImage.get_size())/5)
 
@@ -114,13 +121,12 @@ class Game:
                 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 
             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() / 5.75
+                x = self.recBatiment.x + i* self.rectBatimentimage.get_width() / 6
                 y = self.recBatiment.y + 50
                 r = pygame.rect.Rect(x,y,c.iconStatic.get_width() + 20 ,c.iconStatic.get_height()+ 30 )
                 self.screen.blit(c.textStatic, (x,y))
@@ -133,6 +139,7 @@ class Game:
 
 
             isChamp = False
+            isbatiment = False
 
             
             if self.money < self.displayMoney:
@@ -156,14 +163,16 @@ class Game:
                 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))
+            
                     if event.buttons[0] == 1:#maintenir enfoncé clic gauche
                         if self.dragBatiment == None and self.dragPlantation == None:
                             for i,c in enumerate(typeBatiment):
-                                x = self.recBatiment.x + i* (c.iconStatic.get_width() + 30) +50
+                                x = self.recBatiment.x + i* self.rectBatimentimage.get_width() / 6
                                 y = self.recBatiment.y + 50
                                 r = pygame.rect.Rect(x,y,c.iconStatic.get_width() + 20 ,c.iconStatic.get_height()+ 30 )
                                 if ( (r.collidepoint(event.pos))):
@@ -177,27 +186,29 @@ class Game:
                             for i,c in enumerate(typePlantation):
 
                                 x = self.rectPlantation.x + ( 0 if i%2 else 170) 
-                                y = self.rectPlantation.y + (i//2) * 140
+                                y = self.rectPlantation.y + (i//2) * self.rectPlantationimage.get_height()/4
                                 r = pygame.rect.Rect(x,y,c.iconStatic.get_width() + 20 ,c.iconStatic.get_height()+ 30 )
                                 if ( (r.collidepoint(event.pos))):
                                     self.dragPlantation = c
+                                    
                         if(self.dragPlantation):
                             self.screen.blit(self.dragPlantation.iconStatic, (event.pos))
-
+                            
                                 
                     else:
                         if self.dragPlantation:
                             for champ in self.champs:
                                 if champ.rectScale.collidepoint(event.pos):
-                                    print(champ)
-                                    print(self.dragPlantation)
                                     if self.dragPlantation == Pesticide:
-                                        print(champ.isInfeste)
                                         champ.isInfeste = False
-                                        print(champ.isInfeste)
 
-                                    elif isinstance(champ,TerrainVide):                                                                                                              
-                                        self.champs.append(self.dragPlantation(champ.pos))
+                                    elif isinstance(champ,TerrainVide):     
+                                        newChamp = self.dragPlantation(champ.pos)                                                                                                         
+                                        self.champs.append(newChamp)
+                                        newChamp.setInformation("Occupe" ,"Champ occupé")
+                                        newChamp.setInformation("Nom", "Champ contient "+ self.dragPlantation.__name__)
+                                        newChamp.setInformation("coutEntretien","90€ coût d'entretien mensuel")
+
                                         self.champs.remove(champ)
                                         #Perdre l'argent
                                         variable = self.dragPlantation.montantAchat
@@ -208,30 +219,48 @@ class Game:
                         if self.dragBatiment:
                             for champ in self.champs:
                                 if champ.rectScale.collidepoint(event.pos):
-                                    if isinstance(champ,TerrainVide):  
-                                        self.batiment.append(self.dragBatiment(champ.pos))
-                                       
+                                    if isinstance(champ,TerrainVide) or type(champ) in typePlantation: 
+                                        newBat = self.dragBatiment(champ.pos) 
+                                        self.batiment.append(newBat)
+                                        champ.isbat = newBat
+                                        
+                                        newBat.setInformation("Occupe", "Espace occupé") 
+                                        newBat.setInformation("Nom","Emplacement pour"+str(self.dragBatiment.NameObjet))
+                                        newBat.setInformation("coutEntretien","117€ d'entretien mensuel ")
+                                        champ.showInfo(self.screen,self.recInformation,newBat.descripteurInfrastructure)
+
                                         #Perdre l'argent
                                         variable = self.dragBatiment.montantAchat
+
                                         self.moneyDefile(-variable)
+                                        self.nombreBatiments += 1
 
-                                        if self.dragBatiment not in [Torche,Serre]:
+                                        if self.dragBatiment not in [Torche,Serre,Irrigation,IrrigationGoutte]:
                                             self.champs.remove(champ)
                                             
+                                            self.nombreChamps -= 1
+                                            
                             
                         self.dragPlantation = None
                         self.dragBatiment = None
                     
 
-                        
+                
+
                     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
+
                     if (*event.pos,0,0) in self.recTourSuivant:
                         self.tourSuivantModif = pygame.transform.scale(self.tourSuivantOriginal, (200, 200))
                     else:
@@ -242,31 +271,106 @@ class Game:
                 elif event.type == pygame.MOUSEWHEEL:
                     self.camera.zoomInOut(event.y)
 
-                # Achat d'un champ
-                elif event.type == pygame.MOUSEBUTTONDOWN:
                 
-                    if event.button == 1:
+                elif event.type == pygame.MOUSEBUTTONDOWN:
+                    
+                    if event.button == 1: # Click gauche
+                        #Declanchement du tour suivant
                         if(self.recTourSuivant.collidepoint(event.pos)):
+                            self.coutEntretien()
                             self.temps.NextTurn()
-                            
-                            if(self.temps.currentSeason == "Hiver"):
+
+
+                            #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)
+                            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):
+                                        self.ChangePourcentFanne(Puit,["canicule","secheresse"],10,"chaud",5)
+                                    elif(type(bat) == Irrigation):
+                                        self.ChangePourcentFanne(Irrigation,["canicule","secheresse"],10,"chaud",5)
+                                    elif(type(bat) == IrrigationGoutte):
+                                        self.ChangePourcentFanne(irrigationGoutte,["canicule","secheresse"],5,"chaud",2)
+                                if(len(self.batiment) == 0):
+                                    print("pas de batiment")
+                                    for champ in self.champs:
+                                        champ.pourcentagePlanteFane += 20
+                                        champ.setInformation(hash('fane'),champ.pourcentagePlanteFane)
+
+                            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)
+                                if(len(self.batiment) == 0):
+                                    print("pas de batiment")
+                                    for champ in self.champs:
+                                        champ.pourcentagePlanteFane += 15
+                                        champ.setInformation(hash('fane'),champ.pourcentagePlanteFane)
+
+                            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
+                            elif(self.temps.currentSeason == "Printemps"):
+                                #self.ChangePourcentFanne(ReservoirEau,["chaud"],15)
+                                for bat in self.batiment:
+                                    if (type(bat) == ReservoirEau):
+                                        self.ChangePourcentFanne(ReservoirEau,["chaud"],2)
+                                    elif(type(bat) == Puit):
+                                        self.ChangePourcentFanne(Puit,["chaud"],5,)
+                                    elif(type(bat) == Irrigation):
+                                        self.ChangePourcentFanne(Irrigation,["chaud"],5)
+                                    elif(type(bat) == IrrigationGoutte):
+                                        self.ChangePourcentFanne(irrigationGoutte,["chaud"],2)
+                                if(len(self.batiment) == 0):
+                                    print("pas de batiment")
+                                    for champ in self.champs:
+                                        champ.pourcentagePlanteFane += 15
+                                        champ.setInformation(hash('fane'),champ.pourcentagePlanteFane)
                             
-
-                            i = 0
-                            for champ in self.champs:
                                 
-                                if type(champ) in typePlantation:
+                            for champ in self.champs: 
+                                if type(champ) in typePlantation: 
                                     if champ.isInfeste:
                                         champ.indiceImage = 4
-                                    champ.plantationGrandit()
+                                    self.VerifPlantFane(champ)
                                     if(random.random()< 0.10):
                                         champ.isInfeste = True
-
-
+                                
+                            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)
+
+                        # Achat 
                         for champ in self.champs: 
+
+                            #click sur un champ
                             if champ.rectScale.collidepoint(event.pos):
-                                
+                                #Vente des plantes
                                 if(champ.indiceImage > 3):
                                     self.champs.append(TerrainVide(champ.pos))
                                     self.champs.remove(champ)
@@ -276,23 +380,23 @@ class Game:
                                     self.champs.remove(champ)
                                     
                                  
-
+                                #Achat d'un terrain vide
                                 if isinstance(champ, Buisson):
                                     #if self.money >= champ.prix:
                                     self.moneyDefile(-champ.prix)
                                     self.champs.append(champ.buyField())
                                     self.champs.remove(champ)
-                
+                                    self.nombreChamps += 1
+
                                         
 
             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:
+            if self.selectedChamp and self.selectedBatiment:
                 self.selectedChamp.showInfo(self.screen,self.recInformation)
-                
-
+                self.selectedBatiment.showInfo(self.screen,self.recInformation)
             pygame.display.update()
             self.clock.tick(50)
             self.frame += 1
@@ -305,3 +409,40 @@ class Game:
     def AideEtat(self):
         self.moneyDefile(5000)
 
+    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
+                    champ.setInformation(hash('fane'),champ.pourcentagePlanteFane)
+            elif(self.temps.currentTempsName == case2):
+                for champ in self.champs:
+                    champ.pourcentagePlanteFane += augmentation2
+                    champ.setInformation(hash('fane'),champ.pourcentagePlanteFane)
+
+
+    def VerifPlantFane(self,champ):
+        nbrrandom = random.randint(0,100)
+        if nbrrandom < champ.pourcentagePlanteFane:
+            champ.indiceImage = 4
+        champ.plantationGrandit()
+
+    def coutEntretien(self):
+        cout = 0
+        # Entretien des batiments pendant 3 mois
+        if self.nombreBatiments > 0:
+            cout += (-117 * self.nombreBatiments) * 3
+
+        # Entretien des champs pendant 3 mois
+        if self.nombreChamps > 0:
+            cout += (-90 * self.nombreChamps) * 3
+
+        self.moneyDefile(cout)
diff --git a/src/Infrastructure.py b/src/Infrastructure.py
index 2e1dfba85913d227da8f7b71a18c687e506c389a..a7e27a55f43c6385db97a7009875f9df32ad8a92 100644
--- a/src/Infrastructure.py
+++ b/src/Infrastructure.py
@@ -1,25 +1,27 @@
 import numpy as np
 import pygame
-
-police = pygame.font.SysFont("Alef", 22) #pygame.font.get_fonts() -> liste des fonts
+from Champs import Champs as champ
+police = pygame.font.SysFont("Alef", 25) #pygame.font.get_fonts() -> liste des fonts
 
 class Infrastructure:
-
     def __init__ (self,pos,image):
         self.image = pygame.image.load(image)
         self.imageSize = np.array(self.image.get_size())
         self.pos = pos
         self.rect = pygame.rect.Rect(self.pos, self.image.get_rect().size)
-        self.rectScale = self.rect       
+        self.rectScale = self.rect      
+        self.indiceDureeVie = 0 
 
         self.descripteurInfrastructure = {
-            "temperature" : None,
+            
         }
         self.imageSurfaceinfo = {
             
         }
-        self.setInformation("temperature",2000)
-        #self.setInformation("Occupe", True) 
+        self.setInformation("Occupe", "Espace non occupé") 
+        self.setInformation("Nom","Emplacement vide")
+        self.setInformation("coutEntretien","117€ d'entretien mensuel")
+        self.setInformation("status", self.iconStatic,True)
 
 
 
@@ -53,9 +55,19 @@ class Infrastructure:
         if scaleText:
             self.zoomText = scaleText
 
-    def setInformation(self,clef,valeur):
+    def setInformation(self,clef,valeur,isImage = False):
         self.descripteurInfrastructure[clef] = valeur
-        self.imageSurfaceinfo[clef] = police.render(clef+ " :  "+ str(valeur),False,(0,0,0))
+        if isImage : 
+            self.imageSurfaceinfo[clef] = valeur
+        else : 
+            self.imageSurfaceinfo[clef] = police.render(str(valeur),True,(0,0,0))
+
+    def verifDureeVie(self):
+        self.indiceDureeVie +=1
+        if(self.indiceDureeVie == 8):
+            return True
+        else:
+            return False
 
     def showInfo(self,screen,rectangle):
         i = 0
@@ -65,15 +77,17 @@ class Infrastructure:
 
 
 class Puit (Infrastructure):
+    NameObjet = " puit"
     iconStatic = pygame.transform.scale(pygame.image.load('../assets/Batiment/puit.png'),(150,150))
     textStatic = police.render('Puits',False, (0,0,0))
-    textDescriptionStatic = police.render("C'est un puit",False,(0,0,0))
+    textDescriptionStatic = police.render("Moins efficace qu'un reservoir d'eau",False,(0,0,0))
     montantAchat = 2000
     def __init__ (self,pos):
         super().__init__(pos,'../assets/Plantation/champ.png')
         self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/puit.png'),(120,120))
 
 class ReservoirEau (Infrastructure):
+    NameObjet = " réservoir à eau"
     iconStatic = pygame.transform.scale(pygame.image.load('../assets/Batiment/storagetank.png'),(150,150))
     textStatic = police.render('Capteur eau de pluie',False, (0,0,0))
     textDescriptionStatic = police.render("Permet de capturer l'eau de pluit",False,(0,0,0))
@@ -83,24 +97,82 @@ class ReservoirEau (Infrastructure):
         self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/storagetank.png'),(120,120))
 
 class Irrigation (Infrastructure):
+    NameObjet = " irrigation"
     iconStatic = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigation.png'),(150,150))
     textStatic = police.render('Arrosoir automatique ',False, (0,0,0))
     textDescriptionStatic = police.render("Permet d'arroser les plantes",False,(0,0,0))
     montantAchat = 5000
     def __init__ (self,pos):
         super().__init__(pos,'../assets/Plantation/champ.png')
-        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigation.png'),(120,120))
+        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigation.png'),(90,90))
+
+
+    def draw (self, screen, camera):
+        scaleImage = camera.scaleImage(self.image)
 
+        if scaleImage: # != None
+            self.imgZoom = scaleImage
+            self.rectScale = pygame.rect.Rect(camera.convertLocation(self.pos), self.imgZoom.get_size())
+        
+        
+        if hasattr(self,'imagebat'):
+            scaleBat = camera.scaleImage(self.imagebat)
+            if scaleBat:
+                self.BatZoom = scaleBat
+            varlongueur = camera.convertLocation(self.pos)   
+            self.rectbatScal = pygame.rect.Rect(camera.convertLocation(self.pos), self.BatZoom.get_size())
+
+            screen.blit(
+            self.BatZoom, 
+            (
+                varlongueur[0] +self.rectbatScal.w/3,
+                varlongueur[1] + 
+                (self.rectScale.h-self.rectbatScal.h -self.rectbatScal.h -self.rectbatScal.h /3- (self.rectbatScal.w))
+                /2)
+            )
+    """
+    def showInfo(self,screen,rectangle):
+        i = 0
+        for k,v in self.descripteurInfrastructure.items():
+            screen.blit(self.imageSurfaceinfo[k],(rectangle.x,rectangle.y + i))
+            i += 30
+    """
 class IrrigationGoutte (Infrastructure):
+    NameObjet = " irrigation goutte à goutte"
     iconStatic = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigationGoutte.png'),(150,150))
     textStatic = police.render('Système goutte à goutte',False, (0,0,0))
     textDescriptionStatic = police.render("Permet d'arroser les plantes en économisant l'eau",False,(0,0,0))
     montantAchat = 10000
     def __init__ (self,pos):
         super().__init__(pos,'../assets/Plantation/champ.png')
-        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigationGoutte.png'),(120,120))
+        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/irrigationGoutte.png'),(90,90))
+
+    def draw (self, screen, camera):
+        scaleImage = camera.scaleImage(self.image)
+
+        if scaleImage: # != None
+            self.imgZoom = scaleImage
+            self.rectScale = pygame.rect.Rect(camera.convertLocation(self.pos), self.imgZoom.get_size())
+        
+        
+        if hasattr(self,'imagebat'):
+            scaleBat = camera.scaleImage(self.imagebat)
+            if scaleBat:
+                self.BatZoom = scaleBat
+            varlongueur = camera.convertLocation(self.pos)   
+            self.rectbatScal = pygame.rect.Rect(camera.convertLocation(self.pos), self.BatZoom.get_size())
+
+            screen.blit(
+            self.BatZoom, 
+            (
+                varlongueur[0] +self.rectbatScal.w/3,
+                varlongueur[1] + 
+                (self.rectScale.h-self.rectbatScal.h -self.rectbatScal.h -self.rectbatScal.h /3- (self.rectbatScal.w))
+                /2)
+            )
 
 class Serre (Infrastructure):
+    NameObjet = " serre"
     iconoriginal = pygame.image.load('../assets/Batiment/serre.png')
     iconStatic = pygame.transform.scale(iconoriginal,(150,150))
     textStatic = police.render('Serre',False, (0,0,0))
@@ -114,7 +186,7 @@ class Serre (Infrastructure):
     def __init__ (self,pos):
         super().__init__(pos,'../assets/Plantation/champ.png')
         self.champsAfecte = None
-        #self.imagebat = pygame.transform.scale(pygame.image.load('../assets/serre.png'),(120,120))
+        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/serre.png'),(120,120))
     
     def draw (self, screen, camera):
         scaleImage = camera.scaleImage(Serre.iconStaticCopie)
@@ -131,15 +203,56 @@ class Serre (Infrastructure):
         varlongueur = camera.convertLocation(self.pos)  
         screen.blit(self.imgZoom, (varlongueur[0]+ (self.champRect.w - self.rectScale.w)/2,varlongueur[1]+ (self.champRect.h - self.rectScale.h)/2))
                   
-
 class Torche (Infrastructure):
+    NameObjet = " torche"
+    iconoriginal = pygame.image.load('../assets/Batiment/torche.png')
     iconStatic = pygame.transform.scale(pygame.image.load('../assets/Batiment/torche.png'),(150,150))
     textStatic = police.render('Torche',False, (0,0,0))
     textDescriptionStatic = police.render("Permet de proteger les cultures du froid ",False,(0,0,0))
+
+    iconStaticCopie = pygame.transform.scale(iconoriginal.copy(), (250,200))
+
+    iconStaticCopie.fill((255, 255, 255, 70), None, pygame.BLEND_RGBA_MULT)
+
     montantAchat = 1000
     def __init__ (self,pos):
         super().__init__(pos,'../assets/Plantation/champ.png')
         self.zoneafecte = None
-        #self.imagebat = pygame.transform.scale(pygame.image.load('../assets/torche.png'),(120,120))
+        self.imagebat = pygame.transform.scale(pygame.image.load('../assets/Batiment/torche.png'),(120,120))
+    
+    def draw (self, screen, camera):
+        scaleImage = camera.scaleImage(self.image)
+
+        if scaleImage: # != None
+            self.imgZoom = scaleImage
+            self.rectScale = pygame.rect.Rect(camera.convertLocation(self.pos), self.imgZoom.get_size())
+        
+        
+        if hasattr(self,'imagebat'):
+            scaleBat = camera.scaleImage(self.imagebat)
+            if scaleBat:
+                self.BatZoom = scaleBat
+            varlongueur = camera.convertLocation(self.pos)   
+            self.rectbatScal = pygame.rect.Rect(camera.convertLocation(self.pos), self.BatZoom.get_size())
+
+            screen.blit(
+            self.BatZoom, 
+            (
+                varlongueur[0] - self.rectbatScal.w +(self.rectbatScal.w)/2,
+                varlongueur[1] + 
+                (self.rectScale.h-self.rectbatScal.h)
+                /2)
+            )
+
+            screen.blit(
+            self.BatZoom, 
+            (
+                varlongueur[0] + 
+                self.rectbatScal.w +(self.rectbatScal.w)/2,
+                varlongueur[1] + 
+                (self.rectScale.h-self.rectbatScal.h)
+                /2)
+            )
+
 
 typeBatiment = [Puit,ReservoirEau,Irrigation,IrrigationGoutte,Serre,Torche]
\ No newline at end of file
diff --git a/src/Temps.py b/src/Temps.py
index 9d05b5206a01a29ebcb449dcabf485ebf94da3eb..b26546433b983aaefcb23093dcb87e6dcbdb0191 100644
--- a/src/Temps.py
+++ b/src/Temps.py
@@ -87,14 +87,18 @@ class Temps:
         self.currentSeason = self.getSaisonName(self.indice)
         self.globaltemp = self.tirageTemperature(self.currentSeason)
         self.humidite = self.tirageAuSortChiffreIntervallehumidite(self.currentSeason)
-        self.temps = pygame.image.load(self.tempAAfficher(self.currentSeason,self.tirageTemps()))
+        self.currentTemps = self.tempAAfficher(self.currentSeason,self.tirageTemps())
+        self.currentTempsName = self.decoupage(self.currentTemps)
+        self.temps = pygame.image.load(self.currentTemps)
         self.iconSaison = transformImage(self.temps,200,200)
-
         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.nextTemps = self.tempAAfficher(self.nextSeason,self.tirageTemps())
+        self.nextTempsName = self.decoupage(self.nextTemps)
+        self.nextTempsImage = pygame.image.load(self.nextTemps)
+        self.nexticonSaison = transformImage(self.nextTempsImage,100,100)
 
         self.tempsaisonImage = police.render(self.currentSeason +" : "+ str(round(self.globaltemp,1))+" °C",True,(0,0,0))
         
@@ -111,16 +115,21 @@ class Temps:
         self.currentSeason = self.nextSeason
         self.globaltemp = self.nextglobalTemps
         self.humidite = self.nexthumidite
-        self.temps = self.nextTemps
+        self.temps = self.nextTempsImage
+        self.currentTemps = self.nextTemps
+        self.currentTempsName = self.nextTempsName
         self.iconSaison = self.nexticonSaison
         self.tempsaisonImage = police.render(self.currentSeason +" : "+ str(round(self.globaltemp,1))+" °C",True,(0,0,0))
 
         #Nouveau turn
+       
         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.nextTemps = self.tempAAfficher(self.nextSeason,self.tirageTemps())
+        self.nextTempsName = self.decoupage(self.nextTemps)
+        self.nextTempsImage = pygame.image.load(self.nextTemps)
+        self.nexticonSaison = transformImage(self.nextTempsImage,100,100)
         
         self.tempsaisonImageDeuxPosiiton = police2.render(self.nextSeason +" : "+ str(round(self.nextglobalTemps,1))+" °C",True,(0,0,0))
 
@@ -146,30 +155,25 @@ class Temps:
 
     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")
+        elif saison == "Printemps" and temps not in ["secheresse","canicule","neige","froid"]:
             return str("../assets/Temps/"+temps+".png")
         elif saison == "été" and temps not in ["froid","neige"]:
-            print("été")
             return str("../assets/Temps/"+temps+".png")
         else:
             return self.tempAAfficher(saison,self.tirageTemps())
 
 
-    
+    def decoupage(self,chaine):
+        return chaine.split('/')[3][:-4]
+
     def getClimatTemp(self,clef):
         return self.climats[clef]["temp"]