Programmation d'un jeu avec la bibliothèque pyxel
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()