예제 #1
0
파일: ai.py 프로젝트: anttisalonen/spaeher
 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)
예제 #2
0
    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)
예제 #3
0
 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"
예제 #4
0
 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"
예제 #5
0
파일: ai.py 프로젝트: anttisalonen/spaeher
    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)
예제 #6
0
 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)