¿Queréis saber cómo coordinar vuestros personajes en las competiciones de CodedArena? Repartíos los roles del equipo: sanador, tanque, dps a distancia o cuerpo a cuerpo, ¡lo que decidáis, pero coordinados!

Este artículo contiene un vídeo que ayudará a vuestro equipo a enviaros mensajes entre personajes, ¡y que podáis establecer estrategias ganadoras!

Además os dejamos el código de los dos personajes que aparecen en el vídeo, para que podáis practicar desde el inicio.

¡Vamos allá!

El código de los personajes

Código de Lego

#Variables en memoria para saber cuándo se ha recibido el mensaje y la lista total de mensajes
if "speed_received" not in self.memory:
    self.memory["speed_received"] = False 

if "messages_received" not in self.memory:
    self.memory["messages_received"] = []

#Variables en memoria para saber cuándo se ha recibido el mensaje y la lista total de mensajes
if "speed_received" not in self.memory:
    self.memory["speed_received"] = False 

#Variabxles que se reinician cada tick
friend_target = None
move_x = "none"
move_y = "none"

#Bucle para localizar a nuestro aliado
for mob in mobs:
    if self.team_id == mob.team_id and mob.name != self.name:
        friend_target = mob
        break

if len(self.messages) > 0:
    for message in self.messages:
        #Comprobamos si el mensaje lo hemos recibido previamente
        if message not in self.memory["messages_received"]:
            #Comprobamos que quien nos envía el mensaje es nuestro aliado y si el contenido del mensaje coincide con el esperado
            if message["who"].lower() == friend_target.name.lower() and message["what"] == "speed pls":
                self.memory["speed_received"] = True
                self.memory["messages_received"].append(message)
                self.debug(self.messages)

#Comprobamos que nos a llegado el mensaje y que podemos lanzar el spell pedido
if self.memory["speed_received"] == True and self.is_ready("speed") and self.mana > self.cost_of("speed") and self.distance_to(friend_target) < self.max_distance_of("speed"):
    self.memory["speed_received"] = False
    return ["cast", "speed", friend_target]

#Nos mantenemos siempre a distancia prudencial de nuestro aliado
if self.distance_to(friend_target) > 100:
    if self.x - self.speed > friend_target.x:
        move_x = "left"
    elif self.x + self.speed < friend_target.x:
        move_x = "right"

    if self.y - self.speed > friend_target.y:
        move_y = "up"
    elif self.y + self.speed < friend_target.y:
        move_y = "down"
    
    return ["move", move_x, move_y]

Código de Roco

#Variable en memoria para comprobar que ya hemos enviado la petición de Speed
if "speed_asked" not in self.memory:
    self.memory["speed_asked"] = False 

#Variables que se reinician cada tick
enemy_target = None
move_x = "none"
move_y = "none"

#Bucamos a nuestro enemigo objetivo
for mob in mobs:
    if self.team_id != mob.team_id:
        enemy_target = mob

#En el caso de estar a mas de la mitad del mapa, pedimos a nuestro aliado que nos lance el hechizo Speed
if self.x >= match.location.width / 2 and self.memory["speed_asked"] == False:
    self.debug("speed pls!")
    self.send_message("speed pls")
    self.memory["speed_asked"] = True

#Nos acercamos a nuestro objetivo y le atacamos
if enemy_target != None:
    if self.distance_to(enemy_target) > self.max_distance_of("wand"):

        if self.x - self.speed > enemy_target.x:
            move_x = "left"
        elif self.x + self.speed < enemy_target.x:
            move_x = "right"

        if self.y - self.speed > self.y:
            move_y = "up"
        elif self.y + self.speed < enemy_target.y:
            move_y = "down"
        
        return ["move", move_x, move_y]
    else:
        if self.is_ready("wand"):
            return ["cast", "wand", enemy_target]

Si os ha gustado este artículo y queréis saber qué es CodedArena, no dudéis en poneros en contacto con nosotros.

También podéis seguirnos en nuestras redes sociales:

https://twitter.com/codedarena
https://instagram.com/codedarena
https://www.youtube.com/channel/CodedArena
https://facebook.com/codedarena