You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
5.8 KiB

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('<q>', left)
c.bind_all('<d>', right)
c.bind_all('<space>', jump)
c.bind_all('<f>',shoot)
#flèche
c.bind_all('<k>', 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()