wilden
-
Modifié le 6 nov. 2022 à 22:19
mamiemando
Messages postés33372Date d'inscriptionjeudi 12 mai 2005StatutModérateurDernière intervention22 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()