示例#1
0
		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)
示例#2
0
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