diff --git "a/L\303\251o/Champs.py" "b/L\303\251o/Champs.py" index 3ec9ec9325facb6b3ccaaab12ed74e00e5127937..8a45e5c490181dcbbee392c083b4e966382c9c8e 100755 --- "a/L\303\251o/Champs.py" +++ "b/L\303\251o/Champs.py" @@ -1,154 +1,58 @@ import pygame -from Champs import * import numpy as np -from Camera 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()) - 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.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.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 = 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) - - def gameLoop (self): - while True: - self.screen.blit(self.background, (0,0)) - - # 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)) - - # 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())) - - isChamp = False - # Affichage des champs - for champ in self.champs: - champ.draw(self.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)) - - if self.money < self.displayMoney: - self.displayMoney -= 500 # Si quelque chose coûte moins que 100, changer par -= min(100, self.displayMoney - self.money) - elif self.money > self.displayMoney: - 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())) - - self.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: - exit() - elif event.type == pygame.MOUSEBUTTONDOWN and (*event.pos,0,0) in self.rectangle_button_fleche: - self.gameLoopSecondScreen() - elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: - self.gameLoopSecondScreen() - elif event.type == pygame.MOUSEMOTION: - if event.buttons[2] == 1: #maintenir enfoncé clic droit - self.camera.setPosition(np.array(event.rel)) - - 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 - - elif event.type == pygame.MOUSEWHEEL: - self.camera.zoomInOut(event.y) - - # Achat d'un champ - elif event.type == pygame.MOUSEBUTTONDOWN: - if event.button == 1: - for champ in self.champs: - if isinstance(champ, Buisson): - if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): - if self.money >= champ.prix: - self.moneyChange = self.police.render(str(-champ.prix), True, (255,0,0)) - - self.buyFrame = self.frame - - self.champs.append(champ.buyField()) - self.champs.remove(champ) - self.money -= champ.prix - else: - self.moneyError() - - - 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)) - - if self.selectedChamp: - self.selectedChamp.showInfo(self.screen, self.camera) - - pygame.display.update() - self.clock.tick(50) - self.frame += 1 - - def moneyError (self): - loop = True - while loop: - popUp = pygame.draw.rect(self.screen, (0,0,0), (self.screenSize/3, self.screenSize/3)) - - for event in pygame.event.get(pygame.MOUSEBUTTONDOWN): - if popUp.contains((*event.pos,0,0)): - loop = False - break - - pygame.display.update() - self.clock.tick(50) - - def gameLoopSecondScreen (self): - while True: - self.screen.blit(self.grange, (0,0)) - self.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: - exit() - elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: - return - elif event.type == pygame.MOUSEBUTTONDOWN and (*event.pos,0,0) in self.rectangle_button_fleche_gauche: - self.gameLoop() - pygame.display.update() - self.clock.tick(50) +class Champs: + def __init__ (self, tempature, humidite, tempsAvantMaturation, pos, image): + self.temperature = tempature + self.humidite = humidite + self.TAM = tempsAvantMaturation + self.pos = np.array(pos) + self.image = image + self.imageSize = np.array(self.image.get_size()) + self.rect = pygame.rect.Rect(self.pos, self.image.get_rect().size) + self.rectScale = self.rect + self.police = pygame.font.SysFont("Alef", 22) #pygame.font.get_fonts() -> liste des fonts + self.imgZoom = pygame.transform.scale(self.image, self.imageSize) + + 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()) + + screen.blit(self.imgZoom, camera.convertLocation(self.pos)) + + def changeText (self, camera): + scaleText = camera.scaleImage(self.text) + if scaleText: + self.zoomText = scaleText + +class Houblon (Champs): + def __init__ (self, pos): + super().__init__(0, 0, 0, pos, pygame.image.load('../assets/champ.png')) + self.text = self.police.render("Température : " + str(self.temperature), False, (0,0,0)) + 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))) + self.changeText(camera) + + screen.blit(self.zoomText, camera.convertLocation(self.pos)) + +class Buisson (Champs): + def __init__ (self, pos, prix = 10000): + super().__init__(0, 0, 0, pos, pygame.image.load('../assets/buissonCadenas.png')) + self.prix = prix + self.text = self.police.render("Champ disponible à l'achat : " + str(self.prix), False, (0,0,0)) + 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))) + self.changeText(camera) + + screen.blit(self.zoomText, camera.convertLocation(self.pos)) + + def buyField (self): + # Clique sur buisson -> Pop up "Êtes-vous certain ?" -> Oui ? -> Supprime le buisson de la liste et ajoute un Houblon aux mêmes coordonnées + return Houblon(self.pos) diff --git "a/L\303\251o/Game.py" "b/L\303\251o/Game.py" index 61f25f25ea8d81022c6b7a93308a8992e15ecd64..e2aac7cf50ec45975e56c974c468eee9179371ba 100755 --- "a/L\303\251o/Game.py" +++ "b/L\303\251o/Game.py" @@ -1,213 +1,154 @@ -import pygame -from Champs import * -import numpy as np - -RAYON_MUR_INVISIBLE = 2000 - -class Game: - def __init__ (self, screen): - self.screen = screen - self.screenSize = np.array(self.screen.get_size()) - self.score = 0 - self.money = 10000 - self.displayMoney = 10000 - self.month = "janvier" - #self.champs = [Houblon((-600,0)), Houblon((-300,0)), Houblon((100,0)), Houblon((300,0)) - #Houblon((-800,-200)), Houblon((-500,-200)), Buisson((-200,-200)), Buisson((100,-200)), Buisson((400,-200)), - self.champs=[] - for i in range(12): - if i in (8,9,10): - self.champs.append(Houblon(((i%4)*300-550,(i//4)*200-300))) - else: - self.champs.append(Buisson(((i%4)*300-550,(i//4)*200-300))) - - #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.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.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.flecheChangementscene = pygame.image.load("../assets/flecheScene.png") - self.flecheChangementscene = pygame.transform.scale(self.flecheChangementscene, (100,100)) - self.coordonnee_image = self.screenSize[0]-self.flecheChangementscene.get_width() - 10 ,self.screenSize[1]/2 - self.rectangle_button_fleche = pygame.rect.Rect(*self.coordonnee_image,100,100) - self.grange = pygame.image.load('../assets/grange.webp') - self.grange = pygame.transform.scale(self.grange, (self.screen.get_width(), self.screen.get_height())) - self.frame = 0 - self.buyFrame = -1000 - - def gameLoop (self): - while True: - self.screen.blit(self.background, (0,0)) - - # Météo - self.carre_meteo = 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)) - - - - isChamp = False - # Affichage des champs - for champ in self.champs: - champ.draw(self.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)) - - # somme ajoutée ou enlevée au-dessus puis s'ajoute - - if self.money < self.displayMoney: - self.displayMoney -= 100 # Si quelque chose coûte moins que 100, changer par -= min(100, self.displayMoney - self.money) - elif self.money > self.displayMoney: - self.displayMoney += 100 # 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)) - self.screen.blit(textMoney, (210, self.screen.get_height()-textMoney.get_height()*2)) - self.screen.blit(self.imageMoney, (220+textMoney.get_width(), self.screen.get_height()-self.imageMoney.get_height())) - - print(self.clock.get_time()) - print(self.clock.get_rawtime()) - - - self.screen.blit(self.flecheChangementscene, self.coordonnee_image) - - for event in pygame.event.get(): - if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: - exit() - elif event.type == pygame.MOUSEBUTTONDOWN and (*event.pos,0,0) in self.rectangle_button_fleche: - self.gameLoopSecondScreen() - elif event.type == pygame.MOUSEMOTION: - if event.buttons[2] == 1: #maintenir enfoncé clic droit - self.camera.setPosition(np.array(event.rel)) - - 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 - - elif event.type == pygame.MOUSEWHEEL: - self.camera.zoomInOut(event.y) - - # Achat d'un champ - elif event.type == pygame.MOUSEBUTTONDOWN: - if event.button == 1: - for champ in self.champs: - if isinstance(champ, Buisson): - if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): - if self.money >= champ.prix: - self.moneyChange = self.police.render(str(-champ.prix), True, (255,0,0)) - - self.buyFrame = self.frame - - self.champs.append(champ.buyField()) - self.champs.remove(champ) - self.money -= champ.prix - else: - self.moneyError() - - - - - if self.frame < self.buyFrame + 100: - self.screen.blit(self.moneyChange, (210, self.screen.get_height()-textMoney.get_height()*4-(self.frame-self.buyFrame)*1.25)) - - if self.selectedChamp: - self.selectedChamp.showInfo(self.screen, self.camera) - - if self.carre_meteo.collidepoint(pygame.mouse.get_pos()): - - self.showInfoWeatherInterface() - - - pygame.display.update() - self.clock.tick(50) - self.frame += 1 - - def moneyError (self): - loop = True - while loop: - popUp = pygame.draw.rect(self.screen, (0,0,0), (self.screenSize/3, self.screenSize/3)) - - for event in pygame.event.get(pygame.MOUSEBUTTONDOWN): - if popUp.contains((*event.pos,0,0)): - loop = False - break - - pygame.display.update() - self.clock.tick(50) - - def showInfoWeatherInterface(self): - estFini = self.carre_meteo.collidepoint(pygame.mouse.get_pos()) - popUp = pygame.draw.rect(self.screen, (20,125,125,0.5), (self.screenSize/3, self.screenSize/3)) - while True: - - for event in pygame.event.get(pygame.MOUSEMOTION): - if (*event.pos,0,0) not in popUp: - return - - - pygame.display.update() - self.clock.tick(50) - - def gameLoopSecondScreen (self): - while True: - self.screen.blit(self.grange, (0,0)) - - for event in pygame.event.get(): - if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: - exit() - elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: - return - - pygame.display.update() - self.clock.tick(50) - - -class Camera: - def __init__ (self, screenMid): - self.mid = screenMid - self.zoom = 1 # zoom actuel - self.lastZoom = 1.1 # dernier zoom - self.position = np.array([0,0]) # position du point visé (ici le milieu de l'écran) - - def convertLocation (self, c1:np.array)->np.array: # Convertie les coordonnées de l'écran en coordonnées sur le jeu - c2 = (c1 * self.zoom) + self.mid + (self.position * self.zoom) - return c2 - - def changeScreenLocation (self, c2:np.array)->np.array: # Convertie les coordonnées du jeu en coordonnées de l'écran - c1 = (c2 - self.mid - (self.position / self.zoom)) / self.zoom - return c1 - - def zoomInOut (self, y): # Zoom en fonction de la molette - self.lastZoom = self.zoom - self.zoom += y*0.1 - - self.zoom = np.clip(self.zoom, 0.3, 2) # zoom min max - - def setPosition (self, positionRelative): # Calcule la nouvelle position de l'écran - newPos = self.position + positionRelative - - # Pour faire un carré (mur invisible) : - self.position = np.clip(newPos, [-1000, -1000], [1000, 1000]) - - # Pour faire un cercle : - #if np.linalg.norm(newPos) < RAYON_MUR_INVISIBLE: - #self.position = newPos - - def __repr__ (self): - return f"Zoom = {self.zoom}\nPosition = {self.position}\n" - - def scaleImage (self, img): # Change le zoom d'une image si nécessaire - if self.zoom != self.lastZoom: - return pygame.transform.scale(img, np.array(img.get_size())*self.zoom) - - return None \ No newline at end of file +import pygame +from Champs import * +import numpy as np +from Camera 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()) + 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.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.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 = 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) + + def gameLoop (self): + while True: + self.screen.blit(self.background, (0,0)) + + # 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)) + + # 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())) + + isChamp = False + # Affichage des champs + for champ in self.champs: + champ.draw(self.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)) + + if self.money < self.displayMoney: + self.displayMoney -= 500 # Si quelque chose coûte moins que 100, changer par -= min(100, self.displayMoney - self.money) + elif self.money > self.displayMoney: + 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())) + + self.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: + exit() + elif event.type == pygame.MOUSEBUTTONDOWN and (*event.pos,0,0) in self.rectangle_button_fleche: + self.gameLoopSecondScreen() + elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: + self.gameLoopSecondScreen() + elif event.type == pygame.MOUSEMOTION: + if event.buttons[2] == 1: #maintenir enfoncé clic droit + self.camera.setPosition(np.array(event.rel)) + + 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 + + elif event.type == pygame.MOUSEWHEEL: + self.camera.zoomInOut(event.y) + + # Achat d'un champ + elif event.type == pygame.MOUSEBUTTONDOWN: + if event.button == 1: + for champ in self.champs: + if isinstance(champ, Buisson): + if champ.rectScale.contains(event.pos[0],event.pos[1],0,0): + if self.money >= champ.prix: + self.moneyChange = self.police.render(str(-champ.prix), True, (255,0,0)) + + self.buyFrame = self.frame + + self.champs.append(champ.buyField()) + self.champs.remove(champ) + self.money -= champ.prix + else: + self.moneyError() + + + 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)) + + if self.selectedChamp: + self.selectedChamp.showInfo(self.screen, self.camera) + + pygame.display.update() + self.clock.tick(50) + self.frame += 1 + + def moneyError (self): + loop = True + while loop: + popUp = pygame.draw.rect(self.screen, (0,0,0), (self.screenSize/3, self.screenSize/3)) + + for event in pygame.event.get(pygame.MOUSEBUTTONDOWN): + if popUp.contains((*event.pos,0,0)): + loop = False + break + + pygame.display.update() + self.clock.tick(50) + + def gameLoopSecondScreen (self): + while True: + self.screen.blit(self.grange, (0,0)) + self.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: + exit() + elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: + return + elif event.type == pygame.MOUSEBUTTONDOWN and (*event.pos,0,0) in self.rectangle_button_fleche_gauche: + self.gameLoop() + pygame.display.update() + self.clock.tick(50) \ No newline at end of file