Browse Source
- Création d'une class Objet - Apparition du sapin - la gravité est pour l'instant en commentaire.master
CutieSad
1 month ago
1 changed files with 120 additions and 111 deletions
@ -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…
Reference in new issue