Browse Source

Sapin

- Création d'une class Objet
- Apparition du sapin
- la gravité est pour l'instant en commentaire.
master
CutieSad 1 month ago
parent
commit
5c13d89a1a
  1. 231
      projetv2/projet.py

231
projetv2/projet.py

@ -1,112 +1,121 @@
''' Programme pyxel inspiré d'un tutoriel en ligne de "la Nuit du Code" https://nuit-du-code.forge.apps.education.fr/DOCUMENTATION/PYTHON/01-presentation/ https://www.cahiernum.net/KV8H5B Licence GNU (https://github.com/nuitducode/DOCUMENTATION/blob/main/LICENSE) ''' Programme pyxel inspiré d'un tutoriel en ligne de "la Nuit du Code" https://nuit-du-code.forge.apps.education.fr/DOCUMENTATION/PYTHON/01-presentation/ https://www.cahiernum.net/KV8H5B Licence GNU (https://github.com/nuitducode/DOCUMENTATION/blob/main/LICENSE)
Module basé sur une architecture MVC (modèle-vue-controleur) globale et également intégrée aux objets. Module basé sur une architecture MVC (modèle-vue-controleur) globale et également intégrée aux objets.
''' '''
#Importation #Importation
import pyxel import pyxel
import random import random
#Constantes #Constantes
COULEUR_PERE_NOEL = 1 COULEUR_PERE_NOEL = 1
COULEUR_TIR = 10 COULEUR_TIR = 10
COULEUR_ENNEMI = 8 COULEUR_ENNEMI = 8
#Déclaration des classes #Déclaration des classes
"""Classe intégrant la gestion du Modèle et de la Vue relative au Perenoel du joueur.""" """Classe intégrant la gestion du Modèle et de la Vue relative au Perenoel du joueur."""
class Perenoel: class Objet:
def __init__(self) -> None:
def __init__(self, couleur:int=COULEUR_PERE_NOEL) -> None: self.x = 80 # coordonnée x du coin haut à gauche du carré
self.x = 60 # coordonnée x du coin haut à gauche du carré self.y = 80 # coordonnée y du coin haut à gauche du carré
self.y = 60 # coordonnée y du coin haut à gauche du carré def afficher(self:'Objet') -> None:
self.couleur = couleur # couleur du vaisseau à l'écran """Affiche le Sapin"""
pyxel.blt(self.x, self.y, 0, 25, 46, 38, 19)
def set_x(self:'Perenoel', dx:int) -> None:
"""Déplace le Perenoel à gauche si dx positif, à droite si négatif""" class Perenoel:
self.x = self.x + dx
if self.x < 0: def __init__(self, couleur:int=COULEUR_PERE_NOEL) -> None:
self.x = 0 self.x = 60 # coordonnée x du coin haut à gauche du carré
elif self.x >= 120: self.y = 60 # coordonnée y du coin haut à gauche du carré
self.x = 120 self.couleur = couleur # couleur du vaisseau à l'écran
def set_y(self:'Perenoel', dy:int) -> None: def set_x(self:'Perenoel', dx:int) -> None:
"""Déplace le Perenoel en bas si dy positif, en haut si négatif""" """Déplace le Perenoel à gauche si dx positif, à droite si négatif"""
self.y = self.y + dy self.x = self.x + dx
if self.y < 0: if self.x < 0:
self.y = 0 self.x = 0
elif self.y >= 120: elif self.x >= 120:
self.y = 120 self.x = 120
def saut(self:'Perenoel'): def set_y(self:'Perenoel', dy:int) -> None:
for i in range (1): """Déplace le Perenoel en bas si dy positif, en haut si négatif"""
if i<5: self.y = self.y + dy
self.set_y(-1) if self.y < 0:
else: self.y = 0
self.set_y(1) elif self.y >= 120:
self.y = 120
def gravite(self:'Perenoel'):
if self.y<80: def saut(self:'Perenoel'):
self.set_y(1) for i in range (1):
if i<5:
def get_coord(self:'Perenoel') -> tuple[int, int]: self.set_y(-1)
"""Renvoie le couple (x, y) qui contient les coordonnées (du coin haut gauche) du Perenoel""" else:
return (self.x, self.y) self.set_y(1)
def afficher(self:'Perenoel') -> None: def gravite(self:'Perenoel'):
"""Affiche le Perenoel""" if self.y<30:
pyxel.blt(self.x, self.y, 0, 23, 68, 16, 25) self.set_y(1)
print("bonjour")
# (..., 0, 0, 0, 8, 8) car Image 0 à partir de (0;0) de taille 8*8) def get_coord(self:'Perenoel') -> tuple[int, int]:
"""Classe intégrant la gestion du Modèle relative au joueur.""" """Renvoie le couple (x, y) qui contient les coordonnées (du coin haut gauche) du Perenoel"""
class Joueur: return (self.x, self.y)
def __init__(self, perenoel:'Perenoel', vies:int) -> None: def afficher(self:'Perenoel') -> None:
self.vies = vies # A 0, le joueur a perdu """Affiche le Perenoel"""
self.perenoel = perenoel # L'instance de Vaisseau du joueur pyxel.blt(self.x, self.y, 0, 23, 68, 16, 25)
# (..., 0, 0, 0, 8, 8) car Image 0 à partir de (0;0) de taille 8*8)
def est_vivant(self:'Joueur') -> bool: """Classe intégrant la gestion du Modèle relative au joueur."""
"""Prédicat qui renvoie vrai si le joueur a encore des vies""" class Joueur:
return self.vies > 0
def __init__(self, perenoel:'Perenoel', vies:int) -> None:
def get_vies(self:'Joueur') -> int: self.vies = vies # A 0, le joueur a perdu
"""Renvoie le nombre de vies du joueur""" self.perenoel = perenoel # L'instance de Vaisseau du joueur
return self.vies
def est_vivant(self:'Joueur') -> bool:
def perd_une_vie(self:'Joueur') -> None: """Prédicat qui renvoie vrai si le joueur a encore des vies"""
"""Fait perdre une vie au joueur mais en imposant un minimum de 0""" return self.vies > 0
self.vies = self.vies - 1
if self.vies < 0: def get_vies(self:'Joueur') -> int:
self.vies = 0 """Renvoie le nombre de vies du joueur"""
return self.vies
"""Classe intégrant la gestion du jeu."""
class Jeu: def perd_une_vie(self:'Joueur') -> None:
"""Fait perdre une vie au joueur mais en imposant un minimum de 0"""
def __init__(self) -> None: self.vies = self.vies - 1
if self.vies < 0:
# Création de la fenêtre graphique self.vies = 0
pyxel.init(128, 128, title="Nuit du c0de")
pyxel.load("lorenzoxxxDark.pyxres") """Classe intégrant la gestion du jeu."""
class Jeu:
# Initialisation des données du jeu
self.perenoel = Perenoel() def __init__(self) -> None:
self.joueur = Joueur(self.perenoel, 4)
self.tirs = [] # Tableau des tirs # Création de la fenêtre graphique
self.ennemis = [] # Tableau des ennemis présents pyxel.init(128, 128, title="Nuit du c0de")
self.explosions = [] # Tableau des explosions pyxel.load("lorenzoxxxDark.pyxres")
# Lancement de l'alternance 30x par seconde entre controleur et vue # Initialisation des données du jeu
pyxel.run(self.controler, self.afficher) self.perenoel = Perenoel()
def controler(self): self.objet = Objet()
if pyxel.btn(pyxel.KEY_RIGHT): self.joueur = Joueur(self.perenoel, 4)
self.perenoel.set_x(1) self.tirs = [] # Tableau des tirs
if pyxel.btn(pyxel.KEY_LEFT): self.ennemis = [] # Tableau des ennemis présents
self.perenoel.set_x(-1) self.explosions = [] # Tableau des explosions
if pyxel.btn(pyxel.KEY_UP):
self.perenoel.saut() # Lancement de l'alternance 30x par seconde entre controleur et vue
pyxel.run(self.controler, self.afficher)
def afficher(self:'Jeu') -> None: def controler(self):
pyxel.cls(4) if pyxel.btn(pyxel.KEY_RIGHT):
self.perenoel.afficher() self.perenoel.set_x(1)
self.perenoel.gravite() if pyxel.btn(pyxel.KEY_LEFT):
self.perenoel.set_x(-1)
if pyxel.btn(pyxel.KEY_UP):
self.perenoel.saut()
def afficher(self:'Jeu') -> None:
pyxel.cls(4)
self.perenoel.afficher()
#self.perenoel.gravite()
self.objet.afficher()
j = Jeu() j = Jeu()
Loading…
Cancel
Save