@ -1,13 +1,9 @@
''' 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 .
'''
#Importation
import pyxel
import random
#Constantes
COULEUR_PERE_NOEL = 1
COULEUR_TIR = 10
@ -20,19 +16,35 @@ X1_CADEAU1 = 14
Y1_CADEAU1 = 110
X2_CADEAU1 = 22
Y2_CADEAU1 = 115
POSITION_PLATEFORME = [ 1 , 0 , 0 , 0 , 0 , 1 ] , [ 1 , 1 , 1 , 0 , 1 , 0 ]
#Déclaration des classes
""" Classe intégrant la gestion du Modèle et de la Vue relative au Perenoel du joueur. """
class Objet :
class Plateforme :
def __init__ ( self ) - > None :
self . x = 115 # coordonnée x du coin haut à gauche du carré
self . y = 0 # coordonnée y du coin haut à gauche du carré
def afficher ( self : ' Objet ' , x1 , y1 , x2 , y2 ) - > None :
self . x = 10
self . y = 10
def afficher ( self ) - > None :
for colonne in range ( 6 ) :
for ligne in range ( 1 ) :
if POSITION_PLATEFORME [ colonne ] [ ligne ] == 1 :
self . x = ( self . x * ( colonne + 1 ) )
self . y = ( self . y * ( ligne + 1 ) )
pyxel . blt ( self . x , self . y , 0 , 27 , 30 , 37 , 32 )
class Objet :
def __init__ ( self , x , y , x1 , y1 , x2 , y2 ) - > None :
self . x = x # coordonnée x du coin haut à gauche du carré
self . y = y # coordonnée y du coin haut à gauche du carré
self . x1 = x1
self . x2 = x2
self . y1 = y1
self . y2 = y2
def afficher ( self : ' Objet ' ) - > None :
""" Affichage des objets """
pyxel . blt ( self . x , self . y , 0 , x1 , y1 , x2 , y2 )
#Co :25,46,38,19
pyxel . blt ( self . x , self . y , 0 , self . x1 , self . y1 , self . x2 , self . y2 )
""" Classe intégrant la gestion du Modèle et de la Vue relative au Perenoel du joueur. """
class Perenoel :
def __init__ ( self , couleur : int = COULEUR_PERE_NOEL ) - > 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é
@ -62,7 +74,7 @@ class Perenoel:
self . set_y ( 1 )
def gravite ( self : ' Perenoel ' ) :
if self . y < 3 0:
if self . y < 8 0:
self . set_y ( 1 )
def get_coord ( self : ' Perenoel ' ) - > tuple [ int , int ] :
@ -105,14 +117,19 @@ class Jeu:
# Initialisation des données du jeu
self . perenoel = Perenoel ( )
self . objet = Objet ( )
self . objet = Objet ( 115 , 0 , X1_SAPIN , Y1_SAPIN , X2_SAPIN , Y2_SAPIN )
self . objet2 = Objet ( 80 , 80 , X1_CADEAU1 , Y1_CADEAU1 , X2_CADEAU1 , Y2_CADEAU1 )
self . plateforme = Plateforme ( )
self . joueur = Joueur ( self . perenoel , 4 )
self . tirs = [ ] # Tableau des tirs
self . ennemis = [ ] # Tableau des ennemis présents
self . explosions = [ ] # Tableau des explosions
# Lancement de l'alternance 30x par seconde entre controleur et vue
pyxel . run ( self . controler , self . afficher )
pyxel . run ( self . controler , self . afficher , self . comportement )
def comportement ( self ) :
self . perenoel . gravite ( )
def controler ( self ) :
if pyxel . btn ( pyxel . KEY_RIGHT ) :
self . perenoel . set_x ( 1 )
@ -124,8 +141,9 @@ class Jeu:
def afficher ( self : ' Jeu ' ) - > None :
pyxel . cls ( 4 )
self . perenoel . afficher ( )
#self.perenoel.gravite()
#self.objet.afficher(X1_SAPIN, Y1_SAPIN, X2_SAPIN, Y2_SAPIN)
self . objet . afficher ( X1_CADEAU1 , Y1_CADEAU1 , X2_CADEAU1 , Y2_CADEAU1 )
self . objet . afficher ( )
self . objet2 . afficher ( )
self . plateforme . afficher ( )
j = Jeu ( )