45 lines
994 B
Python
45 lines
994 B
Python
import pygame
|
|
|
|
class Tower():
|
|
def __init__(self,x,y,grid,ttype='null',elem=0):
|
|
self.x,self.y,self.grid=x,y,grid
|
|
self.type=ttype
|
|
self.elem=elem
|
|
self.target=Mouse()
|
|
|
|
def draw(self,screen):
|
|
x,y,s=self.grid.cell_to_real(self.x,self.y)
|
|
sprites.get(self.type,'null')(screen,x,y,s,self)
|
|
|
|
def update(self,events):
|
|
self.target.update(events)
|
|
if self.target: self.tx,self.ty=self.target.x,self.target.y
|
|
|
|
class Mouse():
|
|
def update(self,events):
|
|
self.x,self.y=pygame.mouse.get_pos()
|
|
|
|
shots={}
|
|
def mkshot(funky):
|
|
shots[funky.__name__]=funky
|
|
return funky
|
|
|
|
sprites={}
|
|
def mksprite(funky):
|
|
sprites[funky.__name__]=funky
|
|
return funky
|
|
|
|
@mksprite
|
|
def null(screen,x,y,s,t):
|
|
pygame.draw.rect(screen, (90,90,90), (x,y,s,s))
|
|
|
|
@mkshot
|
|
def null(*args): pass
|
|
|
|
@mksprite
|
|
def cannon(screen,x,y,s,t):
|
|
pygame.draw.rect(screen, (90+165*(t.elem==0),90+165*(t.elem==1),90+165*(t.elem==2)), (x,y,s,s))
|
|
pygame.draw.line(screen, (255,0,0), (x+s/2,y+s/2),(t.tx,t.ty))
|
|
|
|
@mkshot
|
|
def cannon(*args): pass |