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
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()
|