def link(self,t): """ Permet d'associer notre agent java à notre agent python Normalement uitlisé dans les classes java pour passer le type de l'agent return : void """ self.__ret = PyWrapper(t)
class PyWarAgent(ScriptAgent): """ Permet de stocker l'agent java correspondant à notre agent python""" __ret = None def __init__(self): global WA WA = self; def link(self,t): """ Permet d'associer notre agent java à notre agent python Normalement uitlisé dans les classes java pour passer le type de l'agent return : void """ self.__ret = PyWrapper(t) def getRetAgent(self): """ Permet d'avoir l'agent java correspondant à notre agent python ce qui permet d'appeler les méthodes java de cette agent return : WarAgentAdaptater cela le type de l'agent qui l'utilise """ return self.__ret.get() # Methode contenu dans la class ControllableWarAgentAdapter def sendMessage(self, idAgent, message, content): """ Permet d'envoyer une message à une autre agent qui peut lire des messages idAgent -- int -- l'ID de l'agent qui oit reçevoir notre message message -- String -- le titre de notre message content -- String -- le contenu de notre message ou content -- String[] -- les contenus de notre message return : ReturnCode permet de savoir si le message est bien reçu par l'agent """ return self.getRetAgent().sendMessage(idAgent, message, content) def broadcastMessageToAll(self, message, content): """ Permet d'envoyer une message à tout les agents qui peuvent lirenr des messages message -- String -- le titre de notre message content -- String -- le contenu de notre message ou content -- String[] -- les contenus de notre message return : void """ self.getRetAgent().broadcastMessageToAll(message, content) def broadcastMessageToAgentType(self, agentType, message, content) : """ Permet d'envoyer une message à une type d'agent en particulier agentType -- WarAgentType -- le type des agents voulu message -- String -- le titre de notre message content -- String -- le contenu de notre message ou content -- String[] -- les contenus de notre message return : ReturnCode permet de savoir si le message est bien reçu par l'agent """ return self.getRetAgent().broadcastMessageToAgentType(agentType, message, content) def broadcastMessage(self, groupName, roleName, message, content) : """ Permet d'envoyer une message à un autre d'agent en particulier et qui ont un role définit groupName -- String -- le groupe d'agent roleName -- String -- le role de ces agent message -- String -- le titre de notre message content -- String -- le contenu de notre message ou content -- String[] -- les contenus de notre message return : ReturnCode permet de savoir si le message est bien reçu par l'agent """ return self.getRetAgent().broadcastMessage(groupName, roleName, message, content) def reply(self, warMessage, message, content): """ Permet de répondre à un message reçu par l'agent warMessage -- WarMessage -- le message reçu message -- String -- le titre de notre message content -- String -- le contenu de notre message ou content -- String[] -- les contenus de notre message return : ReturnCode permet de savoir si le message est bien reçu par l'agent """ return self.getRetAgent().reply(warMessage, message, content) """ Permet de savoir la liste des messages que notre agent reçoit attention car l'appele de cette méthode efface la liste des messages après utilisation, donc ne l'appeler qu'une fois par tick return : ArrayList<WarMessage> la liste des messages """ def getMessages(self): #print("messages toto") __message = self.getRetAgent().getMessages() #print("message") #print(__message.size()) messagePython = [] for i in range (0, __message.size()): #print(__message.get(i).getMessage()) messagePython.append(__message.get(i)) return messagePython def setIdNextAgentToGive(self, idNextAgentToGive): """ Permet de dire qu'elle sera le prochain agent qui aura le give de ressource de notre agent idNextAgentToGive -- int -- ID de l'agent à qui on va donner notre ressource return : void """ self.getRetAgent().setIdNextAgentToGive(idNextAgentToGive) def getBagSize(self): """ Permet d'avoir la taille de sac d'un agent Le sac dans lequelle il stocke les ressources return : int la taille du sac """ return self.getRetAgent().getBagSize() def getNbElementsInBag(self): """ Permet d'avoir le nombre de ressource dans le sac d'un agent Le sac dans lequelle il stocke les ressources return : int le nombre d'élément dans le sac de l'agent """ return self.getRetAgent().getNbElementsInBag() def isBagEmpty(self): """ Permet de savoir si le sac d'un agent est vide Le sac dans lequelle il stocke les ressources return : boolean true si le sac de l'agent est vide false sinon """ return self.getRetAgent().isBagEmpty() def isBagFull(self): """ Permet de savoir si le sac d'un agent est plein Le sac dans lequelle il stocke les ressources return : boolean true si le sac de l'agent est plein false sinon """ return self.getRetAgent().isBagFull() def setViewDirection(self, viewDirection): """ Permet de modifier la direction du champ de vision d'un agent pour quelle soit différente de celle de ça direction viewDirection -- double -- le nouvelle angle de direction de la vue de l'agent return : void """ self.getRetAgent().setViewDirection(viewDirection) def getHealth(self): """ Permet de savoir la vie courante de notre agent return : int la vie de l'agent """ return self.getRetAgent().getHealth() def getPerceptsAllies(self): """ Permet de savoir la liste des agents qui sont dans notre teams que notre agent perçoit dans sont champ de vision return : ArrayList<WarAgentPercept> la liste des agents perçu """ __ally = self.getRetAgent().getPerceptsAllies() perceptAlly = [] for i in range (0, __ally.size()): perceptAlly.append(__ally.get(i)) return perceptAlly; #return self.getRetAgent().getPerceptsAllies() def getPerceptsEnemies(self): """ Permet de savoir la liste des agents qui sont dans la teams adverse que notre agent perçoit dans sont champ de vision return : ArrayList<WarAgentPercept> la liste des agents perçu """ __Enem = self.getRetAgent().getPerceptsEnemies() perceptEnem = [] for i in range (0, __Enem.size()): perceptEnem.append(__Enem.get(i)) return perceptEnem; #return self.getRetAgent().getPerceptsEnemies() def getPerceptsResources(self): """ Permet de savoir la liste des ressources que notre agent perçoit dans sont champ de vision return : ArrayList<WarAgentPercept> la liste des ressources perçu """ __Ress = self.getRetAgent().getPerceptsResources() perceptRess = [] for i in range (0, __Ress.size()): perceptRess.append(__Ress.get(i)) return perceptRess; #return self.getRetAgent().getPerceptsResources() def getPerceptsAlliesByType(self, agentType): """ Permet de savoir la liste des agents de notre teams d'un type d'agent particulier que notre agent perçoit dans sont champ de vision agentType -- WarAgentType -- le type d'agent que l'on chercher return : ArrayList<WarAgentPercept> la liste des agents perçu """ __ally = self.getRetAgent().getPerceptsAlliesByType(agentType) perceptAlly = [] for i in range (0, __ally.size()): perceptAlly.append(__ally.get(i)) return perceptAlly; #return self.getRetAgent().getPerceptsAlliesByType(agentType) def getPerceptsEnemiesByType(self, agentType): """ Permet de savoir la liste des agents de la teams adverse d'un type d'agent particulier que notre agent perçoit dans sont champ de vision agentType -- WarAgentType -- le type d'agent que l'on chercher return : ArrayList<WarAgentPercept> la liste des agents perçu """ __Enem = self.getRetAgent().getPerceptsEnemiesByType(agentType) perceptEnem = [] for i in range (0, __Enem.size()): perceptEnem.append(__Enem.get(i)) return perceptEnem; #return self.getRetAgent().getPerceptsEnemiesByType(agentType) def getPercepts(self): """ Permet de savoir la liste des agents que notre agent perçoit dans sont champ de vision return : ArrayList<WarAgentPercept> la liste des agents perçu """ __percept = self.getRetAgent().getPercepts() percept = [] for i in range (0, __percept.size()): percept.append(__percept.get(i)) return percept; #return self.getRetAgent().getPercepts() def getDebugString(self): """ Permet de savoir le message de debug pour le même type d'agent que notre agent qui appele cette méthode return : String le message de debug """ return self.getRetAgent().getDebugString() def setDebugString(self, debug): """ Permet de modifier le contenu du message de debug pour le même type d'agent que notre agent qui appele cette méthode debug -- String -- le nouveau message de debug return : void """ self.getRetAgent().setDebugString(debug) def getDebugStringColor(self): """ Permet de savoir la couleur du message de debug pour le même type d'agent que notre agent qui appele cette méthode return : Color la couleur du message de debug """ return self.getRetAgent().getDebugStringColor() def setDebugStringColor(self, color): """ Permet de modifier la couleur du message de debug pour le même type d'agent que notre agent qui appele cette méthode color -- Color -- la nouvelle couleur du message de debug return : void """ self.getRetAgent().setDebugStringColor(color) def getAveragePositionOfUnitInPercept(self, agentType, ally): return self.getRetAgent().getAveragePositionOfUnitInPercept(agentType, ally) def getIndirectPositionOfAgentWithMessage(self, message): return self.getRetAgent().getIndirectPositionOfAgentWithMessage(message) def getTargetedAgentPosition(self, angleToAlly, distanceFromAlly, angleFromAllyToTarget, distanceBetweenAllyAndTarget): return self.getRetAgent().getTargetedAgentPosition(angleToAlly, distanceFromAlly, angleFromAllyToTarget, distanceBetweenAllyAndTarget) def getViewDirection(self): """ Permet de savoir l'angle de la direction du champ de vision de notre agent return : double l'angle du champ de vision """ return self.getRetAgent().getViewDirection() def getMaxHealth(self): """ Permet de savoir la vie maximum que peut avoir un agent Pour l'instant cette vie max de change jamais return : int la vie max de l'agent """ return self.getRetAgent().getMaxHealth() # Methode contenu dans la class MovableWarAgentAdapter def isBlocked(self): """ Permet de savoir si un agent est bloqué return : boolean true si l'agent est bloqué false sinon """ return self.getRetAgent().isBlocked() def getSpeed(self): """ Permet d'avoir la vitesse d'un agent Cette vitesse est constante quel que soit la situation return : double la vitesse de l'agent """ return self.getRetAgent().getSpeed() # Methode contenu dans la class WarAgentAdapter def getHeading(self): """ Permet de savoir l'angle de la direction vers lequel l'agent se trouve return : double l'angle de la direction """ return self.getRetAgent().getHeading() def setHeading(self, angle): """ Permet de modifier l'angle de la direction vers lequel l'agent se trouve angle -- double -- la nouvelle valeur de l'angle return : void """ self.getRetAgent().setHeading(angle) def RandomHeading(self): """ Permet de modifier l'angle de la direction vers lequel l'agent se trouve par une valeur aléatoire compris entre 0 et 360 return : void """ self.getRetAgent().setRandomHeading() def setRandomHeading(self, rangeHeading): """ Permet de modifier l'angle de la direction vers lequel l'agent se trouve par une valeur aléatoire compris entre 0 et le range rangeHeading -- int -- la valeur pour le range du random return : void """ self.getRetAgent().setRandomHeading(rangeHeading) def getTeamName(self): """ Permet de savoir à quel type appartient notre agent return : String le nom de la teams de notre agent """ return self.getRetAgent().getTeamName() def isEnemy(self, percept): """ Permet de savoir si l'agent perçu est un ennemi ou nn percept -- WarAgentPercept -- l'agent perçu return : boolean true si l'agent perçu false sinon """ return self.getRetAgent().isEnemy(percept) def getID(self): """ Permet de savoir le ID de notre agent Ce ID est unique pour chaque agent return : int le ID de notre agent """ return self.getRetAgent().getID() def requestRole(self, group, role): """ Permet de rajouter un role à un group d'agent et de nous affecter ce role Si le group n'existe pas, cela créer ce nouveau groupe group -- String -- le group d'agent role -- String -- le nouveaux role des agents return AbstractAgent.ReturnCode permet de savoir si le rajout c'est bien passé """ return self.getRetAgent().requestRole(group, role) def leaveRole(self, group, role): """ Permet de quitter le role de notre agent group -- String -- le group d'agent role -- String -- le nouveaux role des agents return AbstractAgent.ReturnCode permet de savoir si le rajout c'est bien passé """ return self.getRetAgent().leaveRole(group, role) def leaveGroup(self, group): """ Permet de quitter le group dans lequelle notre agent ce trouve group -- String -- le group d'agent return AbstractAgent.ReturnCode permet de savoir si le rajout c'est bien passé """ return self.getRetAgent().leaveGroup(group) def numberOfAgentsInRole(self, group, role): """ Permet de savoir combien d'agent d'un groupe d'agent on ce role group -- String -- le group d'agent role -- String -- le role des agents return : int le nombre d'agent """ return self.getRetAgent().numberOfAgentsInRole(group, role) # Methode contenu dans la class WarFood def getMaxDistanceTakeFood(self): """ Permet de savoir la distance maximum pour que un agent puisse donner de la nourriture à un autre agent return : double la dictance max """ return WarFood.MAX_DISTANCE_TAKE def getFoodHealthGiven(self): """ Permet de savoir de combien de points de vie, nous restaure la nourriture return : int nombre de points de vie restauré """ return WarFood.HEALTH_GIVEN