Browse Source

Mise à jour de 'SpaceInvader.py'

master
Treacky 5 days ago
parent
commit
b689e98219
  1. 21
      SpaceInvader.py

21
SpaceInvader.py

@ -29,6 +29,7 @@ class Vaisseau:
def __init__(self, couleur:int=COULEUR_VAISSEAU) -> None: def __init__(self, couleur:int=COULEUR_VAISSEAU) -> None:
self.x = 60 # coordonnée x du coin haut à gauche du carré 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.y = 60 # coordonnée y du coin haut à gauche du carré
self.jump = None
self.couleur = couleur # couleur du vaisseau à l'écran self.couleur = couleur # couleur du vaisseau à l'écran
def set_x(self:'Vaisseau', dx:int) -> None: def set_x(self:'Vaisseau', dx:int) -> None:
@ -47,6 +48,8 @@ class Vaisseau:
elif self.y >= 120: elif self.y >= 120:
self.y = 120 self.y = 120
def set_jump(self):
self.jump = 10
def get_coord(self:'Vaisseau') -> tuple[int, int]: def get_coord(self:'Vaisseau') -> tuple[int, int]:
"""Renvoie le couple (x, y) qui contient les coordonnées (du coin haut gauche) du vaisseau""" """Renvoie le couple (x, y) qui contient les coordonnées (du coin haut gauche) du vaisseau"""
@ -57,6 +60,15 @@ class Vaisseau:
pyxel.blt(self.x, self.y, 0, 0, 0, 8, 8) pyxel.blt(self.x, self.y, 0, 0, 0, 8, 8)
# (..., 0, 0, 0, 8, 8) car Image 0 à partir de (0;0) de taille 8*8 # (..., 0, 0, 0, 8, 8) car Image 0 à partir de (0;0) de taille 8*8
def move(self):
if self.jump!=None:
self.jump = self.jump - 1
if self.jump > 0:
self.y = self.y - 1
if self.jump < 0:
self.y = self.y + 1
if self.jump == -100:
self.jump = None
class Joueur: class Joueur:
"""Classe intégrant la gestion du Modèle relative au joueur.""" """Classe intégrant la gestion du Modèle relative au joueur."""
@ -114,7 +126,7 @@ class Ennemi:
def deplacement(self:'Ennemi') -> None: def deplacement(self:'Ennemi') -> None:
"""Déplace l'ennemi d'un pixel vers le bas""" """Déplace l'ennemi d'un pixel vers le bas"""
self.y = self.y + 1 self.x = self.x - 1
def get_coord(self:'Ennemi') -> tuple[int, int]: def get_coord(self:'Ennemi') -> tuple[int, int]:
"""Renvoie le couple (x,y) des coordonnées (du coin haut gauche) de l'ennemi""" """Renvoie le couple (x,y) des coordonnées (du coin haut gauche) de l'ennemi"""
@ -122,7 +134,7 @@ class Ennemi:
def est_hors_ecran(self:'Ennemi') -> bool: def est_hors_ecran(self:'Ennemi') -> bool:
"""Prédicat qui renvoie True si l'ennemi est sorti de l'écran par le bas""" """Prédicat qui renvoie True si l'ennemi est sorti de l'écran par le bas"""
return self.y > 128 return self.x < 0
def est_touche_par(self:'Ennemi', tir:'Tir') -> bool: def est_touche_par(self:'Ennemi', tir:'Tir') -> bool:
"""Prédicat qui renvoie True si l'ennemi est en contact avec le tir""" """Prédicat qui renvoie True si l'ennemi est en contact avec le tir"""
@ -211,7 +223,8 @@ class Jeu:
if pyxel.btn(pyxel.KEY_DOWN): if pyxel.btn(pyxel.KEY_DOWN):
self.vaisseau.set_y(1) self.vaisseau.set_y(1)
if pyxel.btn(pyxel.KEY_UP): if pyxel.btn(pyxel.KEY_UP):
self.vaisseau.set_y(-1) self.vaisseau.set_jump()
self.vaisseau.move()
def tirer(self:'Jeu') -> None: def tirer(self:'Jeu') -> None:
"""Contrôle la touche de création d'un tir et lance la création au besoin""" """Contrôle la touche de création d'un tir et lance la création au besoin"""
@ -238,7 +251,7 @@ class Jeu:
"""Création aléatoire des ennemis""" """Création aléatoire des ennemis"""
if (pyxel.frame_count % 30 == 0): # 30 images / s donc un ennemi par seconde if (pyxel.frame_count % 30 == 0): # 30 images / s donc un ennemi par seconde
nouvel_ennemi = Ennemi(random.randint(0, 120), 0) nouvel_ennemi = Ennemi(120, 0)
self.ennemis.append(nouvel_ennemi) self.ennemis.append(nouvel_ennemi)
def deplacer_ennemis(self:'Jeu') -> None: def deplacer_ennemis(self:'Jeu') -> None:

Loading…
Cancel
Save