From ce08c338289179bb7d3ad317c24f8535d188ceb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Duchmann?= <l.duchmann@etu.unistra.fr> Date: Fri, 21 Oct 2022 14:39:25 +0200 Subject: [PATCH] Reformation du projet --- Emir/Champs.py | 41 ----- Emir/teste pygame.py | 24 --- "L\303\251o/Champs.py" | 58 ------- "L\303\251o/Game.py" | 154 ------------------ "L\303\251o/T3.py" | 57 ------- "L\303\251o/Temps.py" | 58 ------- .../__pycache__/Champs.cpython-310.pyc" | Bin 2044 -> 0 bytes .../__pycache__/Champs.cpython-39.pyc" | Bin 2922 -> 0 bytes "L\303\251o/__pycache__/Game.cpython-310.pyc" | Bin 1289 -> 0 bytes "L\303\251o/__pycache__/Game.cpython-39.pyc" | Bin 6385 -> 0 bytes 10 files changed, 392 deletions(-) delete mode 100755 Emir/Champs.py delete mode 100755 Emir/teste pygame.py delete mode 100755 "L\303\251o/Champs.py" delete mode 100755 "L\303\251o/Game.py" delete mode 100755 "L\303\251o/T3.py" delete mode 100755 "L\303\251o/Temps.py" delete mode 100755 "L\303\251o/__pycache__/Champs.cpython-310.pyc" delete mode 100644 "L\303\251o/__pycache__/Champs.cpython-39.pyc" delete mode 100755 "L\303\251o/__pycache__/Game.cpython-310.pyc" delete mode 100644 "L\303\251o/__pycache__/Game.cpython-39.pyc" diff --git a/Emir/Champs.py b/Emir/Champs.py deleted file mode 100755 index c80f4cb..0000000 --- a/Emir/Champs.py +++ /dev/null @@ -1,41 +0,0 @@ -import pygame as py - -#class Champs: - -class Champs: - - def __init__(self,coordonnee[]): - cooX = coordonnee[0] - cooY = coordonnee[1] - #taille height - #taille width - temperature - tauxEau - TauxInsecte - Construction[] - - def image_graphique(self, image): - #selectionne l'image à afficher - - def MouseHover(self): - #afficher le prix et la hitbox du champs - - - def debloquer(self): - #si le joueur à acheté et a débloquer ou pas - - - - def plantation(self): - #info sur la plante choisi - - #méthode optionnelle - def menu_des_plantations(self); - #menu deroulant ou fenetre qui affiche - #les trucs qu'on peut planter - - def getcoordonee(self): - #Accesseur - - def stringAffichage(self): - #Affichage de toutes les infos diff --git a/Emir/teste pygame.py b/Emir/teste pygame.py deleted file mode 100755 index 2b26c2f..0000000 --- a/Emir/teste pygame.py +++ /dev/null @@ -1,24 +0,0 @@ -import pygame as pg - - -#tour par tour - -tour_fini = false; - -def TourParTour(self): - while not tour_fini: - if(BoutonEstClicker) - tour_fini = true; - tourParTour(BoutonActiver) - elif(BoutonExitClicker): - quitter le jeu - - return tour_fini - -continuer = true - -#Boucle de jeu -while not tour_fini : - res = TourParTour(BoolBtnValider) - if(res): - Tour_score +=1 diff --git "a/L\303\251o/Champs.py" "b/L\303\251o/Champs.py" deleted file mode 100755 index 8a45e5c..0000000 --- "a/L\303\251o/Champs.py" +++ /dev/null @@ -1,58 +0,0 @@ -import pygame -import numpy as np - -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" deleted file mode 100755 index e2aac7c..0000000 --- "a/L\303\251o/Game.py" +++ /dev/null @@ -1,154 +0,0 @@ -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 diff --git "a/L\303\251o/T3.py" "b/L\303\251o/T3.py" deleted file mode 100755 index 439895e..0000000 --- "a/L\303\251o/T3.py" +++ /dev/null @@ -1,57 +0,0 @@ -import pygame -pygame.init() - -from datetime import date -import Game - -pygame.display.set_caption("Climate Simulator : Global Organization") -screen = pygame.display.set_mode((0,0), pygame.FULLSCREEN) - -#on récupère le mois actuelle pour le faire commencer à ce moment -class month: - def __init__ (self, str): - self.month = str - -current_month = month(date.today().strftime("%b")) - -#background (2è scène) -background = pygame.image.load('../assets/accueil.jpg') -background = pygame.transform.scale(background, (screen.get_width(), screen.get_height())) - -#bannière -banner = pygame.image.load('../assets/banner.png') -banner = pygame.transform.scale(banner, (500,500)) -banner_rect = banner.get_rect() -banner_rect.x = screen.get_width() / 4 - -#bouton -play_button = pygame.image.load('../assets/button.png') -play_button = pygame.transform.scale(play_button,(400,150)) -play_button_rect = play_button.get_rect() -play_button_rect.x = screen.get_width() / 2.8 -play_button_rect.y = screen.get_height() / 2.4 - -#buisson -bush = pygame.image.load('../assets/buisson.png') - -#cadenas -lock = pygame.image.load('../assets/cadenas.png') - -screen.blit(background, (0,0)) -screen.blit(play_button, play_button_rect) - -#screen.blit(bush, (100,100)) -#screen.blit(lock, (bush.get_width()/2,bush.get_height()/2+40)) - -pygame.display.update() - -inMenu = True -while inMenu: - for event in pygame.event.get(): - if event.type == pygame.MOUSEBUTTONDOWN and play_button_rect.contains(*event.pos,0,0): - inMenu = False - elif event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: - exit(0) - -# à l'appui du bouton start -Game.Game(screen).gameLoop() \ No newline at end of file diff --git "a/L\303\251o/Temps.py" "b/L\303\251o/Temps.py" deleted file mode 100755 index 7b93dcc..0000000 --- "a/L\303\251o/Temps.py" +++ /dev/null @@ -1,58 +0,0 @@ -import random - -class Temps: - climats = { - "janvier" : { - "temp" : [20,40], - "humidité" : [0,10] - }, - "février" : { - - }, - "mars" : { - - }, - "avril" : { - - }, - "mai" : { - - }, - "juin" : { - - }, - "juillet" : { - - }, - "août" : { - - }, - "septembre" : { - - }, - "octobre" : { - - }, - "novembre" : { - - }, - "décembre" : { - - } - } - - def _init_ (self): - self.temperature - self.humidite - self.neige - self.currentMonth = "janvier" - - def randomTemp (self): - intervalleTemp = self.climats[self.currentMonth]["temp"] - - return random.randint(*intervalleTemp) # *intervalleTemp = intervalleTemp[0], intervalleTemp[1] - - def randomHumidite (self): - intervalleHumidite = self.climats[self.currentMonth]["humidité"] - - return random.randint(*intervalleHumidite) diff --git "a/L\303\251o/__pycache__/Champs.cpython-310.pyc" "b/L\303\251o/__pycache__/Champs.cpython-310.pyc" deleted file mode 100755 index 12d6536b4202f04fe31dddc6292b731b81825794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 zcmah~&2Jk;6rb6hU9X*wnl_~^gyM>iVjx}wH&mg9RB4fDig0`JWwqIvIP0!=&CHlK zmXVNBsaO64`{;jxYyOM5a>|KA#2Mb3wd<6kFxLF`&CJ_3@8kE@#oAhpz=(glk=*kL z`2!c{2ZP03nCbxlC!A)aLj>v3iNhW4PMwZ>pK!*#7leDqPKUwD=M`901Uq&+9;^di zg>}`geNNk?Svv)5WY4heOdOnE206iv^TUC~U6^VUK#&gQq~mbPofo9za+foB!nI(` zH~!9H+#jgK2i3(u83H0ZFx4G^F&&eLj2%Eab^)C+19Zn8Ak$vYpH#-A2PZu?38ti1 zouaPKNt?{*UbALawCE3njP+0o6C4ivDNnU9?&Ix;#vK&OcxgZG3gZusx^Z6^CPktR z`w=nd3LTYem5u~B&6LOvOciZfi?RYvnhjj5?VsaZKg8`=r$sKSa3rx%Ga|3R<1b8C z*cUvF!>5Jh>C^C0JA9&qRAD9xJ`C>_$*?bSt-_u5pTGWo|52D^;GGs*D(w%mSQm1u zn-%+UwpGY(oTnpuQ~3SKtO(0=wgyKgh@v!4brfMb)hd8b7r&cybZM@+&`Pjsi-9uI z$5vnigfX2E$S%~O=S&?6bZQfcHEOzs?PsaBA=+S@j;zCh@l_&)$ZgOipdrJ!jGwK8 zr0|jrI$D`Kg8O?-5B<)e1W{yaQPhWoWGJsj(NDuTD^KKAcvW6Uz?7Z?yh5Vq=$pdG z0}{~H!0x?4R2R;1oP7weAnHqUKrLB=C0SoWHabXH&r}{1!~Lwt-^dph8V#xjfF{Re zf@a`1rrPPb6ULn>oqA>Nn(m&Ypf|eGYK5^<0;-*0C$t867jE&?5a?RQxdM7Ny@q8) z%x7hOZLVk3RHG=#z(N!)lWgC^*0ecp&{2Kvbn8E>ja~;ZcVM3F0%+^Ih92s<$MhPp zp9}XFN3)(c@yC=ikjkD5xHomCE=7h^u|s>of*(zPZ+Ho;J%+Y8nU%fQ_`0z>b8YBL zn7OBagP#0&0W;^6qx=Z~G_OA>vNVC_lp^Os8dqs4v9{8t#_|C9E!Pli!@Ug>+=E1v z*8mLD;<^48QB0r?i)Y{E2L<x!3@u)#o6hBP`C2H<e0c+Hy@T*Bf~8;!B(pZJKq9hi zQ3XrOTc~Fl`5s7b!JIR4mDXK}dkM_f29^Sc#7`%(?b~6h)J1H=q+Q51{9bz4uT3`R z+|?!L_Dl1~y0m^9uJq+iyxvClig@yU*fVS()912*$2Kw>qYV$W(P4$1w@GV|z`5W5 zPdNDjyn|H1r~MQ(c&Y|Pp6+L&aWZLSw`1rGUHbuUNBT%?R{0SEI1K!dO_V=H_zdAI zgbSG=KSveo|1t=yWdrv^fMoy+2FNe)Z28WzxL?8nQes(LCULJ>v0fN<P~_TF+DB>^ lgwk6~lx2X`JZJWmKPI?Se*C_nXdC}Q0<!L`JN4C#+CRzCqvrqs diff --git "a/L\303\251o/__pycache__/Champs.cpython-39.pyc" "b/L\303\251o/__pycache__/Champs.cpython-39.pyc" deleted file mode 100644 index 1049ff2e9b1d3232f2601190b367b9930d597e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2922 zcmd5;Uys{F5cm3DoLuft+oOf{Xaf{VfV+tQP%3D9sHIgKB(4&YAFv$TmviLUVb^JU zQIL?XQon}tn9tE~v9G*vAAo20%{sZ{DnLB4(T-<#W_M?2<~JLEb+x9U{doJ+fVkgi zu-r@xZla6ZAfXnrM03k8bM?DgsE5WgEi{gF*TBdOEsU(lI5J!lV>_&1Tv1~yWP4iE zImSL(J0QB;bPR5yi>n}!=CV+8^^k@7GtD(ZBQ){F?xBsZ6;@~`Y40BR{ecK<ESWdr zE%aS<@hixfjWtgj>!56Gfa<wXm}7H7^VZk`wbhK)vx~|^Q}a$<?bV8vvDSke^Yw|= zTb<AzHH^`{HE66C8)TuHKZEhv;v8wCJ8Et-)L^I4mgcP_+CM%IYnrdfl|1SXBJSry z9!ck5*pI_Fk6h!?t%p)i2h#F6_Yb8p$b_`wzTbsbH_AN`k0Q6KCicKedvMtG`;jzx z6y(zUfv8d}$D}T+#P0=u0=4}t&1GfpP~0KL9%M-zKqKdVD)uwpmzGe9mAKz^v#j5= zr75Ch->s6t%3My~bvJ1&ZawzX{2@*Id7P!Z3K6GVnri$teEzr((mKfcQ7aO0>ZjS` zIB4ze-Tl55B)CN$ZHu@+O#D3K+ubDV_{nz0yM7vv)P}7GFQ!?mjPTCjP&%F$r*ZCi z6kV|iqA^?j>Y!)YMdq*#Hd>#pm}>_HY0erYGhIO?M;pvoFEoUUP1rBS*x;Yc6QpMr z7GxC43ME8OFC3%>B|vq|3Q7WfA)n|Bkl53vtleCZHRZ;86gcG%egOyZI+0Z(Yantx z$kN9V&mUyLlKWOjeum^`CyDc>$zP>`Edm}zsk8&coBRBAQX?Oi<f2*-a{mb}6$;O+ zuA6YnWqq_Va|p=;LfO2LW2h@<&>pzh+!?qWKd&&O)5Z7}#7#pTEX_Q6icA|JMIM2} zG#Sa?0CB78?lk?feYN1gPrDI`=q#Zy%j(QzqcbxL7aDEk9^#$ix}GO%p4ZR9VM2V} z^L`%sNh#r%=-@YryiH``62;LuoNi2ER|h)GsXJ9Q7hvvGBUey6Re+vr`%D!fXHkTn zV?Wmduq|2nE*o}|EIs8{I+4IY8;Wm1a_vYfXdC>-EZ2LeKd2gPVlnc!RoJ1CSHL+( z?1HMH6RJ~H%%FQURYmMJXV`0WZfB?E3lZg_1%LGiJA<@4T!-WlK>1=?mX*f!#+|95 z7Ay!-(-K2ep3-e9At_g+nPh&*2~pDKQ5r^E8Y1VMfX3e<auuYhmvN@6O_{8EUXZ{L z&s!v++PDGvEV^54i;XsBKHB+PM3R%ph+SIs6G#p;7Wx>j0;d-SP-c>oCM-vJ2B)LA zqUdgFd3CJ!YDa7nxSSZ|N)&9k6&x$-&|F=tJwd3^ZW_mb;vD|boOHpU{r=5#twgCx zs1vC2%Mg~;twNkbWCKJRen&`?a8Rb-6_Svv;Ccm#22BtymNHX;)e#5TlY8lYMrk{9 z)^%3X7tWe1G;RJ4ZE%gqyF^sZe-2Kr&O#7GNiq+EO8ge-sqAlpBeMiSz+rWZ(@cPV zs*#kM*a10td>xhj^uSk<{pxAQ6Re(e*HS33fr6^6+#be4Wa;q+tUOh3DY_?6xR1fV zLV>Dl`P^0j2#2En9{{nn07R#>W7iL()E5dF6g*X48euF3SsHhesPUp`B-ebvCnuor z_n^~U;qT+~5;XV+n3Lv!$4?bL_%`W~la_EX3pU-8e?>&Oe^G%bV6=~*%+UY|Tft)H zwEqPx_=m8Je@x^vB8x(*vWT*c;BqQc=l0JtHK6h|Z^Tm_RIny|=jvrS!au<BEzwmX zDp)mHiI&rcN~beCyc0)B_yv{=+DrpJ=BLhuSbQClX5}AY!f!y%X_KXEEfDf01QdC7 zH;1j+j?HNfz@rK&t#sHQ9C8JHGNQDbG?ungrkBXRQ9e~)lLu79@#g4jmp1Bu0jkDj APyhe` diff --git "a/L\303\251o/__pycache__/Game.cpython-310.pyc" "b/L\303\251o/__pycache__/Game.cpython-310.pyc" deleted file mode 100755 index ce878e7575535c3639b4da82d7c8f0345adebb35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1289 zcmYjQL2uhO6ecN3RvbG`(std39)@8+p<=0k0zEY-(mH7tw6(iA=`aI>po)w`Sr#2q zZs)=Q3Z&-(`v=Z${R_MHU+~(?dg`US?XX8W-a>&NAKxQCKJtB%&1M}z`{(Uf*&QFD z4|Z~~c`(_6uD=Cfh~WbD>_`f{k9HCB7=42nJtaNDa2G}XM_7m25jOZ{X3dL@z+?-$ zz7D`q4>M%9G4clWyg5~mG9PFHLwD05&+Lvxv$jpA1zm3eOz{*YkP;wp021Z_dKHC) zaOE@q6!)z^sA_pQTRKBv*O|p-hU_VAg@H$`-ayFI^0a&*xQd8#I*5q)296Y;VOi8L zfzA}?rSWwp6*vA+mVDxd>d4d{jD^;+G_@b(_;~?FkR7GNkv73-(ud0!S_weERmf~$ z{LBqa%?qAYoVD!Qh!_fvLj|Qk?~q!D;qMe69&#qqcpw!MgSgX;4>VUgF1Tdlcw1)U zAulT(x4NHR|GC?VvqB8hif?E!92aRN)keRN&(mT<s(xCES7{|=89#piPR90`Z;d7< zOcGIwDoO0odIccB^KTtDa2>yDx|NGnnSHoLqhQ!=t}+IUC3xc;&7dl07=uVophh{_ zM!$w9WJ+dGr5xGFaigNSKMT$f#5Pa7sh8Kl6Ap;Jb#5;Wh`J4S9sJAIt{SHZc7A;x zZ-VdHIr~-1p0DJW`Us+{e_%#`cl{^y7OAIGtA#a&Pw?^GDb~-N64rnT<!dUnI9p$2 z2B%$~T{(l3z;ku>1@m3L7&NmVdH*ZKSq~k4+=QD)*IexkJrqTumce5vQ|U|9u%^#n zK%I=&=M|`7G6GHfc(Au`YL9k)+3x(@Hr@aP6+TLKx~=<9cMRpfiOMWL=^S)-o^<y2 zI&DK0$i;-2EUQ$M+IS<W)v6^A^^ttJR~|}JV?vLLbYg<>h=C5&C6`AfvOz@Enw`{y zc8UWXTH&cL!Rh2Shs%!8s`jyzBdZ4eJpchIP+TV~c!hk2Lnn;uAQOtoYf1vZ0Ah8o zfyrOzf?061Bj0MQ1j-~a^&}aBbPH=YlH_=t7W0U@ViUP(!HWL^*p!t0|E=0|01zU` hV9EKQB<_I&cPZ_B7xp@;`JFcB=iamW{f}jx{0oP~G`|1< diff --git "a/L\303\251o/__pycache__/Game.cpython-39.pyc" "b/L\303\251o/__pycache__/Game.cpython-39.pyc" deleted file mode 100644 index 4c51cea609429270c4381cc9eaa48b56aa8c0a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6385 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 W4PI}OZG;5?@I(N#jInQs;{O8+;>NiE -- GitLab