from threading import Thread
from time import sleep
class Pistolet():
    def __init__ (self,unx,uny,uncanvas,uncolor):
        self.x=unx
        self.y=uny
        self.c=uncanvas
        self.u=uncolor
        self.direction =True
        self.pistol=self.c.create_rectangle(self.x,
                                            self.y,
                                            self.x+5,
                                            self.y+5,
                                            fill=self.u)
    def deplace(self,dx,dy):
        self.x=dx
        self.y=dy
        self.c.coords(self.pistol,self.x,
                                  self.y,
                                  self.x+5,
                                  self.y+5)

    def CreerBalle(self):
        self.b=Balle(self.x,self.y,self.c)

class Balle():
    def __init__ (self,unx,uny,uncanvas):
        self.x=unx
        self.y=uny
        self.cote=5
        self.c=uncanvas
        
        
    def deplace(self,unx,uny):
        self.x=unx
        self.y=uny
        self.c.coords(self.ball,self.x,self.y,self.x+self.cote,self.y+self.cote)
        
    def dessineballe(self):
        self.ball=self.c.create_rectangle(self.x,self.y,self.x+self.cote,self.y+self.cote,fill="#ff0000")
        
    def Tmilieu(self,avance):
        self.deplace(self.x+avance,self.y)
    
    def TdiagH(self,direction):
        if direction==True:
            self.x=self.x+2
            self.y=self.y-2
        else:
            self.x=self.x-2
            self.y=self.y-2
    
    def TdiagB(self,direction):
        if direction==True:
            self.x=self.x+2
            self.y=self.y+2
        else:
            self.x=self.x-2
            self.y=self.y+2

class Tir_p(Thread):
    def __init__ (self,uncanvas,unpistolet):
        Thread.__init__(self)
        self.c=uncanvas
        self.cote=5
        self.p=unpistolet
        self.p.CreerBalle()
        self.p.b.dessineballe()
    
    def run(self):
        self.direction_tir=self.p.direction
        if self.direction_tir==True:
            while  self.p.b.x+2<1900 :
                self.p.b.Tmilieu(2)
                sleep(0.01)
                
        else:
            while self.p.b.x-2>0 :
                self.p.b.Tmilieu(-2)
                sleep(0.001)
        self.c.delete(self.p.b.ball)
        self.c.delete(self.p.b)