|
|
|
@ -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""" |
|
|
|
@ -28,7 +25,6 @@ class Chien :
|
|
|
|
|
self.x = XMAX |
|
|
|
|
|
|
|
|
|
def dep_y(self,dist) : |
|
|
|
|
|
|
|
|
|
self.y = self.y + dist |
|
|
|
|
if self.y < 0: |
|
|
|
|
self.y = 0 |
|
|
|
@ -36,11 +32,14 @@ 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 not self.chien.puni : |
|
|
|
|
if pyxel.btn(pyxel.KEY_RIGHT): |
|
|
|
|
self.chien.dep_x(1) |
|
|
|
|
if pyxel.btn(pyxel.KEY_LEFT): |
|
|
|
@ -50,17 +49,28 @@ class Joueur :
|
|
|
|
|
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,7 +87,18 @@ 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.""" |
|
|
|
@ -89,8 +110,11 @@ 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: |
|
|
|
@ -98,10 +122,12 @@ class Jeu:
|
|
|
|
|
|
|
|
|
|
self.maitre.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) |
|
|
|
@ -118,7 +144,9 @@ class Jeu:
|
|
|
|
|
|
|
|
|
|
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() |