from tkinter import * from time import sleep from random import randint from threading import Thread from math import * shotgun=False from pistolet import * class Corp_boss: def __init__(self,unx,uny,unlong,unlarge,uncanvas,uncolor): self.x=unx self.y=uny self.long=unlong self.larg=unlarge self.col=uncolor self.c=uncanvas self.base=self.c.create_rectangle(self.x, self.y+self.larg, self.x+self.larg, self.y+self.long, outline=self.col) self.tete=self.c.create_rectangle(self.x-15, self.y-30, self.x+self.larg+15, self.y+self.larg, outline=self.col) self.eye_1=self.c.create_line(self.x,self.y,self.x+30,self.y+20, self.x+30,self.y+20,self.x+23,self.y+42, self.x+23,self.y+42,self.x-10,self.y+25, self.x-10,self.y+25,self.x,self.y, fill=self.col) decalage_eye=70 self.eye_2=self.c.create_line(self.x+decalage_eye,self.y,self.x-30+decalage_eye,self.y+20, self.x-30+decalage_eye,self.y+20,self.x-23+decalage_eye,self.y+42, self.x-23+decalage_eye,self.y+42,self.x+10+decalage_eye,self.y+25, self.x+10+decalage_eye,self.y+25,self.x+decalage_eye,self.y, fill=self.col) self.lst_l=[] for dec in range(0,self.long,110): ligne=self.c.create_line(self.x, self.y+self.larg+dec, self.x+self.larg, self.y+self.larg+dec, fill=self.col) self.lst_l.append(ligne) class Canon: def __init__(self,unx,uny): self.x=unx self.y=uny class Sword: def __init__(self,unx,uny,uncanvas,uncolor): self.x=unx self.y=uny self.c=uncanvas self.col=uncolor def affiche_sword(self): self.manche=self.c_rectangle() self.sword=self.c_rectangle() def coup_base(self): pass class Boss: def __init__(self,unx,uny,unlong,unlarge,uncanvas,uncolor,unvie): self.corp=Corp_boss(unx,uny,unlong,unlarge,uncanvas,uncolor) self.canon=Canon(0,0) self.sword=Sword(0,0) self.c=uncanvas self.vie=unvie ################################Perso################################ class Personnage: def __init__ (self,unx,uny,uncote,uncanvas,unfenetre,unvie,color,unvitesse,unacceleration): self.x=unx self.y=uny self.cote=uncote self.canvas=uncanvas self.f=unfenetre self.couleur=color self.v=unvie self.bondit=False self.r=self.canvas.create_rectangle(self.x, self.y, self.x+self.cote, self.y+self.cote, fill=(self.couleur)) self.p=Pistolet(self.x+self.cote, self.y, self.canvas, self.couleur) self.vitesse=unvitesse self.acceleration=unacceleration self.epe=Sword(self.x,self.y,self.canvas,self.couleur) def deplace(self,dx,dy): self.x= dx self.y= dy self.canvas.coords(self.r,self.x, self.y, self.x+self.cote, self.y+self.cote) if self.p.direction==True: self.p.deplace(self.x+self.cote,self.y) else: self.p.deplace(self.x-5,self.y) def droit(self,droit): self.p.direction=True self.deplace(self.x+droit,self.y) def gauche(self,droit): self.p.direction=False self.deplace(self.x-droit,self.y) def dead(self): self.canvas.delete(self.r) class Graviter(Thread): def __init__(self,unperso): Thread.__init__(self) self.perso=unperso def run(self): while True: while self.perso.y+self.perso.cote <900 or self.perso.vitesse!=1: self.perso.bondit=True self.perso.deplace(self.perso.x,self.perso.y+self.perso.acceleration-self.perso.vitesse) sleep(0.01) if self.perso.vitesse!=1: self.perso.vitesse=self.perso.vitesse-1 self.perso.f.update() self.perso.bondit=False self.perso.f.update() mouvement=10 def right(event): if perso.x+mouvement + cotecorp1 <1900 : perso.droit(mouvement) def left(event): if perso.x-mouvement >0 : perso.gauche(mouvement) def jump(event): if perso.bondit!=True: perso.vitesse=40 def dash(event): perso.droit(10) def shoot(event): chevrotine = Tir_p(c,perso.p) chevrotine.start() def fall(): saut=Graviter(perso) saut.start() tir= Tk() c= Canvas(width =1900,height =900,bg="black") c.pack() c.bind_all('', left) c.bind_all('', right) c.bind_all('', jump) c.bind_all('',shoot) #flèche c.bind_all('', dash) xcorp1 =500 ycorp1 =500 cotecorp1 = 100 boss=Corp_boss(250,500,600,70,c,"#9c33ff") #Personnage perso=Personnage(xcorp1,ycorp1,cotecorp1,c,tir,30,"#ff0000",1,10) fall() tir.mainloop()