# tank 1 import game from basegroundobj import * import objrocket XACCEL = 0.22 FRICTION = 0.97 # min space between player and tank GUARD_DIST = 40 MAX_DX = game.groundspeed * 5 MIN_DX = -game.groundspeed * 1.5 # where rocket appears ROCKET_OFFSET_X = 5 ROCKET_OFFSET_Y = -4 # how long between rocket launches LAUNCH_INTERVAL = 300 # how many total rockets do we have ROCKETS = 5 name = 'tank1' type = 'gif' image = None def load_game_resources(): global image, name image = gfx.load('%s.%s' % (name,type)) class Tank1(GroundObj): # class variables max = 1 count = 0 def __init__(self,airobjectlist,exhaustobj,launch_interval=LAUNCH_INTERVAL, rockets=ROCKETS, *extra_rocket_params): global name,image self.images = image GroundObj.__init__(self,name,image) self.airobjectlist = airobjectlist self.exhaustobj = exhaustobj self.launch_interval = launch_interval self.rockets = rockets #print "extra rocket params:",extra_rocket_params self.extra_rocket_params = extra_rocket_params self.xaccel = XACCEL self.rocket_offset_x = ROCKET_OFFSET_X self.rocket_offset_y = ROCKET_OFFSET_Y self.timer = 0 def tick(self, speedadjust): self.timer += 1 if self.timer % self.launch_interval == 0: self.launch() if self.rect.left < game.player.rect.right + GUARD_DIST: self.dx += self.xaccel elif self.rect.left < game.player.rect.right + 2 * GUARD_DIST: self.dx += 0 else: self.dx += -self.xaccel self.dx = ((self.dx + game.groundspeed) * FRICTION) - game.groundspeed if self.dx < MIN_DX: self.dx = MIN_DX elif self.dx > MAX_DX: self.dx = MAX_DX self.x += self.dx * speedadjust if self.x < gfx.rect.left - self.rect.width: self.dead = 1 self.rect.topleft = [self.x,self.y] def launch(self): if self.rockets > 0: self.rockets -= 1 #print "making rocket: ", self.extra_rocket_params self.airobjectlist.append(apply(objrocket.Rocket, (self.x+self.rocket_offset_x,self.y+self.rocket_offset_y, self.exhaustobj) + self.extra_rocket_params))