diff --git a/app.py b/app.py index 2ec768f..a9670c0 100644 --- a/app.py +++ b/app.py @@ -1,20 +1,17 @@ # Pyxel Studio # Importations ============================================================ - import pyxel import random as rd - # CONSTANTES et variables globales lues directement ========================= - XMAX = 128 YMAX = 128 - # Déclaration des classes class Chien : def __init__(self) -> None: self.x = 60 # coordonnée x du coin haut à gauche du carré self.y = 60 # coordonnée y du coin haut à gauche du carré + self.puni = False def afficher(self:'Chien') -> None: """Affiche le chien""" @@ -26,9 +23,8 @@ class Chien : self.x = 0 elif self.x > XMAX: self.x = XMAX - + def dep_y(self,dist) : - self.y = self.y + dist if self.y < 0: self.y = 0 @@ -36,31 +32,45 @@ class Chien : self.y = YMAX class Joueur : - - def __init__(self,chien:'Chien') : + def __init__(self,chien:'Chien',maitre:'Maitre',poules:list) : self.chien = chien + self.maitre = maitre + self.poules = poules + self.nb_poules = len(poules) def se_deplacer(self) : - if pyxel.btn(pyxel.KEY_RIGHT): - self.chien.dep_x(1) - if pyxel.btn(pyxel.KEY_LEFT): - self.chien.dep_x(-1) - if pyxel.btn(pyxel.KEY_DOWN): - self.chien.dep_y(1) - if pyxel.btn(pyxel.KEY_UP): - self.chien.dep_y(-1) + if not self.chien.puni : + if pyxel.btn(pyxel.KEY_RIGHT): + self.chien.dep_x(1) + if pyxel.btn(pyxel.KEY_LEFT): + self.chien.dep_x(-1) + if pyxel.btn(pyxel.KEY_DOWN): + self.chien.dep_y(1) + if pyxel.btn(pyxel.KEY_UP): + self.chien.dep_y(-1) + + def punition(self) -> bool : + if self.maitre.x >= self.chien.x and self.maitre.y >= self.chien.y and self.maitre.x <= self.chien.x + 8 and self.maitre.y <= self.chien.y + 8 : + self.chien.puni = True + def collecter(self) : + if nb_poules : + for i in range(nb_poules) : + if self.poules[i].x >= self.chien.x and self.poules[i].y >= self.chien.y and self.poules[i].x <= self.chien.x + 8 and self.poules[i].y <= self.chien.y + 8 : + nb_poules -= 1 + self.poules[i].collecte = True class Maitre : - def __init__(self) : + def __init__(self,chien:'Chien') : self.poursuite = False self.blesse = False + self.chien = chien self.x = rd.randint(0,XMAX) self.y = rd.randint(0,YMAX) def deplacer(self) : - rand_dist_x = rd.randint(0,XMAX/16) + rand_dist_x = rd.randint(0,4) rand_dist_x = rd.choice((-1,0,1))*rand_dist_x - rand_dist_y = rd.randint(0,YMAX/16) + rand_dist_y = rd.randint(0,4) rand_dist_y = rd.choice((-1,0,1))*rand_dist_y self.x += rand_dist_x self.y += rand_dist_y @@ -77,8 +87,19 @@ class Maitre : pyxel.blt(self.x,self.y,0,8,0,8,8) class Poule : - pass - + def __init__(self) : + self.x = rd.randint(0,XMAX) + self.y = rd.randint(0,YMAX) + self.collecte = False + + def si_collecte(self) : + if self.collecte : + self.x = None + self.y = None + + def afficher(self) : + pyxel.blt(self.x,self.y,0,0,8,8,8) + class Jeu: """Classe intégrant la gestion du jeu.""" def __init__(self) -> None: @@ -89,19 +110,24 @@ class Jeu: self.chien = Chien() - self.maitre = Maitre() - self.joueur = Joueur(self.chien) + self.poules = [] + for i in range(4) : + self.poules.append(Poule()) + self.maitre = Maitre(self.chien) + self.joueur = Joueur(self.chien,self.maitre,self.poules) pyxel.run(self.controler, self.afficher) def controler(self:'Jeu') -> None: """déplacement avec les touches de directions""" self.maitre.deplacer() - self.joueur.se_deplacer() + self.joueur.se_deplacer() + self.joueur.punition() #self.croc() #self.deplacer_ennemis() #self.supprimer_ennemis_touches() + def se_deplacer(self:'Jeu')->None : if pyxel.btn(pyxel.KEY_RIGHT) : self.chien.dep_x(2) @@ -115,10 +141,12 @@ class Jeu: def afficher(self:'Jeu') : pyxel.cls(0) # efface le contenu de la fenetre - + self.chien.afficher() self.maitre.afficher() - + for i in range(4) : + if not self.poules[i].collecte : + self.poules[i].afficher() + # Programme Principal ! - application = Jeu() \ No newline at end of file