def execute(self, gameState): if self.shot: return None if not self.path: self.path = battlefield_bfs(gameState.battlefield, gameState.getActiveSoldier().position, self.target.position) if not self.path: return None if gameState.getActiveSoldier().position == self.path[0]: self.path.popleft() if not self.path: self.path = battlefield_bfs(gameState.battlefield, gameState.getActiveSoldier().position, self.target.position) if not self.path: return None tgtvec = game.subVectors(self.path[0], gameState.getActiveSoldier().position) if game.vectorLength(game.subVectors(self.target.position, gameState.getActiveSoldier().position)) < 10: sold = gameState.soldierOn(self.target.position) if sold and sold.teamID != self.ownTeamID: print self.ownTeamID, gameState.activeSoldierID, "shooting" self.shot = True return fromClient.ShootCommand(self.target.position) else: print self.ownTeamID, gameState.activeSoldierID, "giving up on hunt, no idea where he went" return None else: return gotoCommand(str(self.ownTeamID) + " " + str(gameState.activeSoldierID) + ": hunting from " + str(self.path[0]) + " to " + str(self.target.position), tgtvec, gameState)
def execute(self, gameState): if len(self.exploreTargets) == 0: return None if self.path and gameState.getActiveSoldier().position == self.path[0]: self.path.popleft() while True: if self.path and gameState.battlefield.spotFree(self.path[0]): tgtvec = game.subVectors(self.path[0], gameState.getActiveSoldier().position) break while self.exploreTargets and \ game.vectorLength(game.subVectors(gameState.getActiveSoldier().position, self.exploreTargets[0])) < 2: self.exploreTargets.popleft() if not self.exploreTargets: return None self.path = battlefield_bfs(gameState.battlefield, gameState.getActiveSoldier().position, self.exploreTargets[0]) if not self.path: self.exploreTargets.popleft() self.path = None else: self.path.popleft() return gotoCommand( str(self.ownTeamID) + " " + str(gameState.activeSoldierID) + ": exploring from " + str(gameState.getActiveSoldier().position) + " for " + str(self.exploreTargets[0]), tgtvec, gameState)
def handleGameEvent(self, g, client): if g.server.clientControls(client.clientID, g.gameState.activeTeamID): g.decrementAPs(20) pos = game.Position(self.proto.pos.x, self.proto.pos.y) sold = g.gameState.soldierOn(pos) if sold and sold.hps > 0 and game.vectorLength(game.subVectors(sold.position, g.gameState.getActiveSoldier().position)) < 10: g.killSoldier(sold) else: print "Warning: client", client.clientID, "sends command when not allowed"
def handleGameEvent(self, g, client): if g.server.clientControls(client.clientID, g.gameState.activeTeamID): g.decrementAPs(20) pos = game.Position(self.proto.pos.x, self.proto.pos.y) sold = g.gameState.soldierOn(pos) if sold and sold.hps > 0 and game.vectorLength( game.subVectors( sold.position, g.gameState.getActiveSoldier().position)) < 10: g.killSoldier(sold) else: print "Warning: client", client.clientID, "sends command when not allowed"
def execute(self, gameState): if len(self.exploreTargets) == 0: return None if self.path and gameState.getActiveSoldier().position == self.path[0]: self.path.popleft() while True: if self.path and gameState.battlefield.spotFree(self.path[0]): tgtvec = game.subVectors(self.path[0], gameState.getActiveSoldier().position) break while self.exploreTargets and \ game.vectorLength(game.subVectors(gameState.getActiveSoldier().position, self.exploreTargets[0])) < 2: self.exploreTargets.popleft() if not self.exploreTargets: return None self.path = battlefield_bfs(gameState.battlefield, gameState.getActiveSoldier().position, self.exploreTargets[0]) if not self.path: self.exploreTargets.popleft() self.path = None else: self.path.popleft() return gotoCommand(str(self.ownTeamID) + " " + str(gameState.activeSoldierID) + ": exploring from " + str(gameState.getActiveSoldier().position) + " for " + str(self.exploreTargets[0]), tgtvec, gameState)
def execute(self, gameState): if self.shot: return None if not self.path: self.path = battlefield_bfs(gameState.battlefield, gameState.getActiveSoldier().position, self.target.position) if not self.path: return None if gameState.getActiveSoldier().position == self.path[0]: self.path.popleft() if not self.path: self.path = battlefield_bfs( gameState.battlefield, gameState.getActiveSoldier().position, self.target.position) if not self.path: return None tgtvec = game.subVectors(self.path[0], gameState.getActiveSoldier().position) if game.vectorLength( game.subVectors(self.target.position, gameState.getActiveSoldier().position)) < 10: sold = gameState.soldierOn(self.target.position) if sold and sold.teamID != self.ownTeamID: print self.ownTeamID, gameState.activeSoldierID, "shooting" self.shot = True return fromClient.ShootCommand(self.target.position) else: print self.ownTeamID, gameState.activeSoldierID, "giving up on hunt, no idea where he went" return None else: return gotoCommand( str(self.ownTeamID) + " " + str(gameState.activeSoldierID) + ": hunting from " + str(self.path[0]) + " to " + str(self.target.position), tgtvec, gameState)