Un primer código para las competiciones (I): Detectando al adversario
Este artículo es una revisión y puesta al día con CodedArena 2.0 de la serie de artículos "Un primer código para competir", que creamos para las competiciones de CodedArena 1.0. ¡Esperamos que os sea útil!

¡Hola, Comunidad Coded!
Este artículo es una revisión y puesta al día con CodedArena 2.0 de la serie de artículos Un primer código para competir, que creamos para las competiciones de CodedArena 1.0.
¡Esperamos que os sea útil!
Introducción
Crear un programa desde cero es similar a empezar a escribir un libro. Necesitas saber qué objetivo quieres lograr, tener momentos creativos, conocer las herramientas y el lenguaje adecuado, e ir dando paso a paso, releyendo lo escrito, realizando pequeños cambios, y vuelta a empezar.
Hasta que finalmente tenemos nuestro programa, o nuestro libro.
En este artículo, desde el Equipo de CodedArena, queremos ayudaros en los primeros pasos para crear el código básico de un personaje, que os permita empezar a disfrutar de nuestras competiciones aunque tengáis conocimientos básicos de programación.
El objetivo
Esta es una serie de 5 artículos, que nos permitirán:
- Detectando al adversario.
- Acercándonos al adversario.
- Seleccionando un hechizo, y empezando la lucha.
- Luchando a distancia.
- Comprobando la vida de nuestro personaje, y actuar según la situación.
¡ATENCIÓN!
El código resultante será sencillo, porque el objetivo es sencillo. La intención es entender la estructura del código, y el porqué de cada paso o línea de código,
El objetivo de esta serie de artículo no es tener la mejor de las estrategias de competición. ¡Para eso está vuestra imaginación y creatividad!
¡Vamos allá con el primer artículo!
Detectando al adversario
El primer paso de todo código de personaje en CodedArena pasa por analizar constantemente la escena de la partida.
Es muy importante saber qué personajes de la lista mobs
son aliados, y cuales adversarios.
Con la ayuda de una variable, iterando en la lista mobs
, y con un condicional y la lógica adecuada, podemos saber quién es nuestro adversario.
Veamos un posible código:
target = None
for mob in mobs:
if mob.name != self.name:
target = mob
break
La estrategia es sencilla: inspeccionamos elemento a elemento la lista mobs
for mob in mobs:
y si el nombre del personaje (variable mob) que estamos inspeccionando en ese momento es diferente (!=) al nombre de nuestro personaje (variable self.name)
if mob.name != self.name:
es un adversario, y por lo tanto nos quedamos con el adversario encontrado (mob) en la variable target
target = mob
y salimos del iterador for
break
Salimos con la instrucción break
porque ya hemos encontrado un adversario, y no queremos continuar buscando más (aunque en la lista mobs
haya más personajes).
Probando el código
Para probar el código, necesitaremos que por la Consola de Actividad aparezca algún mensaje, por ejemplo el nombre del adversario que hemos encontrado.
Lo haremos añadiendo utilizando la instrucción self.debug()
, tal y como vemos en el siguiente código:
target = None
for mob in mobs:
if mob.name != self.name:
target = mob
break
self.debug("Nombre del adversario: " + target.name)
Probemos la partida en la opción Multijugador > Escaramuzas de CodedArena, tal y como podéis ver en el siguiente vídeo:
Esta estrategia no sirve siempre
Esta estrategia sirve cuando nuestro personaje se enfrenta a uno o varios adversarios, y no tiene aliados.
Buscar al primer personaje cuyo nombre es diferente al nuestro, y ya tenemos un adversario. ¡Un plan sin fisuras! ¿No?
Pues no. Un plan peligroso.
¿Qué pasaría si nuestro personaje cuenta con la ayuda de un aliado? Sucedería que en la línea
if mob.name != self.name:
el condicional se cumpliría, y podríamos llegar a seleccionar a nuestro aliado como objetivo de nuestros ataques...
A veces es mejor más lógica que menos lógica
Así pues, ¡cuidado con las condiciones lógicas simples! A veces es mejor asegurarnos con una condición lógica extra que se cumplirá aquello que queremos.
Por ejemplo, imaginemos que en una misión Tas es nuestro aliado:
if mob.name != self.name and mob.name != "Tas":
En este caso, para asegurarnos que el elemento de la lista mobs
que estamos inspeccionando es un adversario, deben cumplirse dos condiciones al mismo tiempo:
- que no tenga el mismo nombre que nuestro personaje
- Y que su nombre no sea Tas
Si no hay más alidados en la lista mobs
, el condicional anterior seguro que nos encuentra a los adversarios.
¿Qué hemos conseguido?
Ahora ya sabemos quién es nuestro adversario de la lista mobs
.
En el próximo artículo veremos cómo aproximar a nuestro personaje a la posición del adversario.
¡Nos vemos en el próximo artículo, Acercándonos al adversario!

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