Programmation d'un jeu avec la bibliothèque pyxel

Fermé
wilden - Modifié le 6 nov. 2022 à 22:19
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 8 nov. 2022 à 14:26

Bonjour,

J'aurais besoin de votre aide car j'ai réalisé un programme en language python en utilisant la bibliothèque pyxel et de la POO qui ne fonctionne pas.

Je crois que le problème viens de ma fonction draw qui ne marche pas.

Pourriez-vous m'aidez svp

Voici le programme mais je ne sais pas comment vous faire parvenir la  banque d'image.
 

from pyxel import *
from time import *
    
class Jeu:

    def __init__(self):
        '''constructeur'''
        init(500, 500, title="lemmings", fps=12, quit_key=KEY_SPACE)

        self.lemmings = "lemmings"
        self.lemmings_x = 0
        self.lemmings_y = 0
        self.liste = [self.lemmings]
        self.lemmings_sortie = 0
        self.compteur_lemmings=0
        self.mort_lemmings=0
        
        self.s = "droite"
        self.selection = 0
        self.vitesse= perf_counter()%4
        self.compteur_niv=0
        self.action_en_cours =0
        
        self.sol = (16,self.compteur_niv*16)
        self.pente_descente = (96,0)
        self.pente_monte = (32,self.compteur_niv*16)
        self.herbe =  (48,self.compteur_niv*16)
        self.sol_herbe = (64,self.compteur_niv*16)
        self.terre = (80, self.compteur_niv*16)
        
        self.apparition_x=0
        self.apparition_y=0
        self.sortie_x=50
        self.sortie_y=50
        
        self.tile=0
        self.u=0
        self.v=0
        self.w=0
        self.h=0
        self.n1=0
        self.n2=0
        self.n3=0
        self.n4=0
        
        load ("resources.pyxres")
        run (self.update, self.draw)
    
    def niveau_1 (self):
        '''niveau 1'''
        self.tile=0
        self.u=0
        self.v=0
        self.w=80
        self.h=24
        self.apparition_x=1
        self.apparition_y=4
        self.sortie_x=64
        self.sortie_y=13
        self.compteur_niv=0
        self.mort_lemmings=16
        self.n1=True
       
    def niveau_2 (self):
        '''niveau 2'''
        self.tile=1
        self.u=0
        self.v=0
        self.w=152
        self.h=56
        self.apparition_x=0
        self.apparition_y=3
        self.sortie_x=139
        self.sortie_y=49
        self.compteur_niv=1
        self.mort_lemmings=55
        self.n2=True
        
    def niveau_3 (self):
        '''niveau 3'''
        self.tile=2
        self.u=0
        self.v=0
        self.w=152
        self.h=104
        self.apparition_x=6
        self.apparition_y=7
        self.sortie_x=108
        self.sortie_y=84
        self.mort_lemmings=100
        self.compteur_niv=2
        self.n3=True
        
    def niveau_4 (self):
        '''niveau 4'''
        self.tile=3
        self.u=0
        self.v=0
        self.w=55
        self.h=24
        self.apparition_x=0
        self.apparition_y=2
        self.sortie_x=40
        self.mort_lemmings=22
        self.sortie_y=2
        self.compteur_niv=3
        self.n4=True
        
    def reset_compteur (self) :
        ''' compteur de lemmings remit à 0)'''
        if self.compteur_niv==1 :
            self.compteur_lemmings =0
        if self.compteur_niv==2 :
            self.compteur_lemmings =0
        if self.compteur_niv==3 :
            self.compteur_lemmings =0
        
    def apparition_lemmings(self):
        '''fait apparaître le lemmings'''
        if self.compteur_lemmings < 50 :
            if btn(KEY_SPACE):
                self.lemmings_x=self.apparition_x
                self.lemmings_y=self.apparition_y
                self.liste.append(self.lemmings)
                self.action_en_cours =1
            
    def retirer_lemmings(self):
        '''fait disparaître le lemmings'''
        if self.liste is None :
            pass
        else:
            if self.lemmings_x == self.sortie_x:
                if self.lemmings_y == self.sortie_y:
                    self.liste.remove(self.lemmings)
                    self.action_en_cours =2
                    self.lemmings_sortie +=1
                    if not self.lemmings in self.liste and self.lemmings_sortie >=1 and self.n1==True:
                        self.n1=False
                        if not self.lemmings in self.liste and self.lemmings_sortie >=1 and n2()==True and self.n1==False:
                            self.n2=False
                            if not self.lemmings in self.liste and self.lemmings_sortie >=1 and self.n3()==True and self.n2==False:
                                self.n3=False
                                if not self.lemmings in self.liste and self.lemmings_sortie >=1 and self.n4()==True and self.n3==False:
                                    self.n4()==False
            if pget(self.lemmings_y) == self.mort_lemmings :
                self.liste.remove[self.lemmings]
                        
    def sens(self):
        '''défini le sens vers lequel le lemmings va'''
        tuile = pget(self.lemmings_x+9, self.lemmings_y)
        if tuile == self.terre :
            if self.s == "droite":
                self.s = "gauche"
            elif self.s == "gauche":
                self.s = "droite"

    def direction(self):
        '''le lemmings marche'''
        tuile = pget(self.lemmings_x, self.lemmings_y-1)
        if self.vitesse==0 and self.s == "droite":
            if tuile==self.sol or tuile==self.sol_herbe or tuile==self.herbe or tuile==self.terre :
                self.lemmings_x += 1
                self.action_en_cours =3
            else :
                self.lemmings_y += 1
        elif self.vitesse==0 and self.s=="gauche":
            if tuile==self.sol or tuile==self.sol_herbe or tuile==self.herbe or tuile==self.terre :
                self.lemmings_x -= 1
                self.action_en_cours =4
            else:
                self.lemmings_y += 1

    def selec(self):
        '''selectionne le lemmings'''
        if not self.lemmings in self.liste:
            return 'aucun lemmings'
        elif self.lemmings in self.liste :
            return 'un lemmings'
        else :
            if btn(KEY_LEFT):
                if not self.liste[self.selection] == 0:
                    self.sélect = self.liste[self.selection - 1]
                    self.selection -= 1
                elif self.liste[self.selection] == 0:
                    self.sélect = self.liste[len(self.liste)]
            elif btn(KEY_RIGHT):
                if not self.liste[self.selection] == len(self.liste):
                    self.sélect = self.liste[self.selection + 1]
                    self.selection += 1
                elif self.liste[self.selection] == len(self.liste):
                    self.sélect = self.liste[0]

    def creuser(self):
        '''le lemmings creuse'''
        tuile = pget(self.lemmings_x+17, self.lemmings_y)
        if btn(KEY_S):
            if self.s == "gauche":
                tuile = pget(self.lemmings_x-17, self.lemmings_y)
                self.action_en_cours =5
                while tuile == terre :
                    self.lemmings_x -= 1
                    self.action_en_cours =6
            elif self.s == "droite":
                tuile = pget(self.lemmings_x+9, self.lemmings_y)
                self.action_en_cours =7
                while tuile == terre :
                    self.lemmings_x += 1
                    self.action_en_cours =8
                         

    def creuser_bas(self):
        '''le lemmings creuse vers le bas'''
        tuile = pget(self.lemmings_x, self.lemmings_y-1)
        self.action_en_cours =9
        if btn(KEY_S) :
            while tuile == sol_herbe or tuile == terre or tuile == herbe or tuile == sol :
                self.lemmings_y -= 1
                self.action_en_cours =10

    def accelerer(self):
        '''tout accélèrent'''
        if btn(KEY_T):
            self.vitesse = perf_counter()%2
            if not self.lemmings in self.liste:
                self.vitesse = perf_counter%4      

    def grimper(self):
        '''le lemmings grimpe'''
        tuile = pget(self.lemmings_x+9, self.lemmings_y)
        if btn(KEY_Z):
            while tuile == terre :
                self.lemmings_y += 1
                self.action_en_cours =11
            if tuile == sol_herbe or tuile == sol or tuile == herbe :
                self.lemmings_y +=1
                self.lemmings_x +=1
                self.action_en_cours =12

    def stop(self):
        '''le lemmings s'arrête'''
        if btn(KEY_F):
            tuile = pget(self.lemmings_x, self.lemmings_y-1)
            if self.vitesse==0 and self.s == "droite":
                if tuile==self.sol or tuile==self.sol_herbe or tuile==self.herbe or tuile==self.terre :
                    self.lemmings_x += 0
                    self.lemmings == self.terre
            elif self.vitesse==0 and self.s=="gauche":
                if tuile==self.sol or tuile==self.sol_herbe or tuile==self.herbe or tuile==self.terre :
                    self.lemmings_x -= 0
                    self.lemmings == self.terre
            
    def boom(self):
        '''le lemmings explose'''
        if btn(KEY_B):
            if perf_counter%44==0 :
                self.liste.remove(self.lemmings)
                explosion=perf_counter%2
                self.action_en_cours =13
    
    def camera_jeu (self):
        '''on peut déplacer la caméra'''
        camera_x,camera_y = 1,1
        camera(camera_x,camera_y)
        if btn(KEY_K) and camera_y > 0 :
            camera_y += 15
            camera(camera_x,camera_y)
        if btn (KEY_I) :
            camera_y -=15
            camera(camera_x,camera_y)
        if btn (KEY_L) :
            camera_x += 15
            camera(camera_x,camera_y)
        if btn (KEY_J) and camera_x > 0 :
            camera_x -=15
            camera(camera_x,camera_y)

    def update(self):
        '''le jeu s'actualise tout le temps'''
        self.direction()
        self.sens()
        self.creuser()
        self.creuser_bas()
        self.boom()
        self.grimper()
        self.accelerer()
        self.stop()
        self.apparition_lemmings()
        self.retirer_lemmings()
        self.selec()
        self.camera_jeu()
        self.niveau_1()
        self.niveau_2()
        self.niveau_3()
        self.niveau_4()

    def draw(self):
        '''affichage'''
        
        self.camera_jeu()
        
        if self.action_en_cours == 1 :
            blt(self.apparition_x, self.apparition_y, 0, 32, 0, 16, 16)
        if self.action_en_cours == 2 :
            blt(self.sortie_x, self.sortie_y, 0, 48, 0, 16, 16)
        if self.action_en_cours == 3 :
            blt(self.lemmings_x, self.lemmings_y, 0, 24, 16+32+48+32*self.vitesse, 16, 16)
        if self.action_en_cours == 4 :
            blt(self.lemmings_x, self.lemmings_y, 0, 48, 16+32+48+32*self.vitesse, -16, 16)
        if self.action_en_cours == 5 :
            blt(self.lemmings_x, self.lemmings_y, 0,16, 16+32+48*self.vitesse,-16, 16)
        if self.action_en_cours == 6 :
            blt (self.lemmings_x,self.lemmings_y,0,16,64+80*self.vitesse,-16,16)
            rect(self.lemmings_x-9,self.lemmings_y,8,8,(0,0,0))    
        if self.action_en_cours == 7 :
            blt(self.lemmings_x, self.lemmings_y, 0, 16, 16+32+48*self.vitesse, 16, 16)
        if self.action_en_cours == 8 :
            blt (self.lemmings_x,self.lemmings_y,0,16,64+80*self.vitesse,16,16)
            rect(self.lemmings_x+9,self.lemmings_y,8,8,(0,0,0))
        if self.action_en_cours == 9 :
            blt(self.lemmings_x, self.lemmings_y, 0, 16, 16+32+48+64*self.vitesse, 16, 16)
        if self.action_en_cours == 10 :
            blt(self.lemmings_x, self.lemmings_y, 0, 16, 96+112*self.vitesse, 16, 16)
            rect(self.lemmings_x,self.lemmings_y-1,8,8,(0,0,0))
        if self.action_en_cours == 11:
            blt(self.lemmings_x, self.lemmings_y, 0, 80, 16+32*self.vitesse, 16, 16)
        if self.action_en_cours == 12:
            blt(self.lemmings_x, self.lemmings_y, 0, 80, 16+32*self.vitesse, 16, 16)
        if self.action_en_cours == 13:
            blt(self.apparition_x, self.apparition_y, 0, 64, 16+32+48+64+80+96+112+128+144+160+176+192+208*explosion, 16, 16)
            
        
        while self.compteur_niv == 0 and self.n1 is True :
            bltm (0,0,self.tile, self.u, self.v,self.w,self.h)
        while self.compteur_niv == 1 and self.n2 is True and self.n1 is False :
            bltm (0,0,self.tile, self.u, self.v,self.w,self.h)
        while self.compteur_niv == 2 and self.n3 is True and self.n2 is False :
            bltm (0,0,self.tile, self.u, self.v,self.w,self.h)
        while self.compteur_niv == 3 and self.n4 is True and self.n3 is False :
            bltm (0,0,self.tile, self.u, self.v,self.w,self.h)

Jeu()

1 réponse

mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
8 nov. 2022 à 14:26

Bonjour,

Quelle est la question et quel est le message d'erreur. Si tu as beaucoup de fichiers à partager, crée un dépôt github et donne nous le lien.

Bonne chance

0