import sys from creatures import Dragon import mpi from math import * import traceback from util import * class FooDragon(Dragon): # self.Actions # GetBreath # GetFlyingDirection # GetFlyingPosition # ScanHorizon [Range] # SetFlyingDirection [self.Direction.East, self.Direction.NorthEast, etc.] # self.Direction.ToString(), self.Direction.FromString() # BreatheFire [Power] # Fly [distance] def action(self): (pos, code) = doMpi(self,self.Actions.GetFlyingPosition,[]) (x,y) = (pos.x,pos.y) (fdir, code) = doMpi(self,self.Actions.GetFlyingDirection,[]) # Find the closest enemy fl = None (result, code) = doMpi(self,self.Actions.ScanHorizon,[7]) for en in result: (ex,ey) = en['coords'] tl = fireAt(self,fdir,x,y,ex,ey) if fl is None or len(tl) < len(fl): fl = tl if fl == None: doMpi(self,self.Actions.SetFlyingDirection,[self.Direction.randomDir()]) doMpi(self,self.Actions.Fly, [1]) elif len(fl) == 0: doMpi(self,self.Actions.BreatheFire,[10]) else: for action in fl: doMpi(self,action[0],action[1]) doMpi(self,self.Actions.BreatheFire,[10])