[pyar] [ANN] Age of Empyres

Santiago Avendaño santiavenda2 en gmail.com
Vie Nov 20 09:17:02 ART 2015


El 20 de noviembre de 2015, 2:27, fisa <fisadev en gmail.com> escribió:

> Buenas!
> Escribo con buena onda, aunque con sueño porque ya es re tarde.
>
> Un detalle que ahorraría muchas renegadas: estaría bueno que si una unidad
> pide moverse o atacar en una dirección inválida, el juego simplemente siga,
> en lugar de crashear y hacerlo perder. Como regla más general: crashear el
> juego lo menos posible, avisar nomás, porque si crashea, el ciclo de
> agregar más código para chequearlo, subir, esperar a que se corra otra
> partida, etc, se te hace eterno y te pasa el 75% de las veces. Te lleva 40
> minutos debuguear 5 lineas de código.
>
> Hay un bug importante en el juego: las coordenadas de las acciones están
> invertidas respecto a las coordenadas del mapa. Por ejemplo, si uno hace
> que todas sus unidades se muevan al norte usando self.N, se mueven todas
> hacia la izquierda del mapa. Y no es un tema visual, porque el problema es
> que en game_map la data no está girada. O sea, game_map y las acciones usan
> sistemas de coordenadas invertidos entre si. Entonces por ejemplo, si miro
> hacia el norte del mapa para chequear que pueda moverme, y decido moverme
> porque puedo, resulta que después explota porque no se movió hacia el norte
> que yo miré, sino en otra dirección.
>
> Me pasé unas 5 horas renegando con eso, tenía lógica bastante compleja de
> movimientos y no se notaba a simple vista que todo se rompía porque estaba
> bugueado el juego, sumado a que cada ciclo de debug lleva su buen rato de
> esperas.
> Hace un rato finalmente descubrí el bug, y con un hack fácil logré que mis
> unidades se muevan... y cuando hice andar mi primer partida "bien",
> descubrí que las unidades tienen rango de visión limitado, lo que no estaba
> dicho en ningún lado y básicamente me rompe toda la estrategia que
> programé. Ya es re tarde y mañana trabajo, así que no llego a modificar mi
> bot antes de las 18. Le puse toda la onda, pero como quedó el bot creo que
> no da para competir :(
>
> Saludos!
>
>
> On Thu, Nov 19, 2015 at 4:29 PM Joaquín Sorianello <joac en joac.com.ar>
> wrote:
>
>> Mas novedades:
>>
>> Luego de que varios jugadores observaran que las reglas del juego
>> beneficiaban demasiado a los bots que mantenían todas las unidades en
>> la base, hicimos un cambio en las reglas:
>>
>> - Al inicio del juego, las unidades se mueven a las casillas aledañas
>> al cuartel, excepto una.
>> - Solo es posible tener una unidad dentro de la casilla de  la base.
>>
>> Saludos!
>> --
>> Joaquín Sorianello
>> A.K.A. Joac
>> @_joac
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
> --
> --
> fisa  -  Juan Pedro Fisanotti
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>


No se si es contra las reglas del juego pero bue, prefiero que nos
divirtamos jugando a que nos aburramos debugueando.

El siguiente código debería chequear que un movimiento sea válido (o al
menos usando esta validación mi código dejo de crashear por un movimiento
inválido)

def valid_movement(x, y, direction, game_map):
    new_pos = x + direction.x, y + direction.y
    if new_pos in game_map:
        tile = game_map[new_pos]
        return tile.enemies_count == 0 and not tile.enemy_hq and
tile.reachable and not tile.own_hq
    else:
        return False

donde:

   - x, y es la posición
   - direction es una de las direcciones enumeradas en el bot (Bot.N por
   ejemplo)
   - game_map es el mapa

Y para solucionar el problema que dijo fisa, de que las coordenadas estén
cambiadas, me manejé siempre con las posiciones del bot (en un principio
había asumido que moverse para arriba significaba sumar 1 en la coordenada
y, pero evidentemente no era así). Al menos mi algoritmo no depende que el
norte sea el norte (con que esté opuesto al sur me alcanza) así que con eso
no tuve problemas.

Bueno no creo que pueda hacer mejoras a mi bot así que bueno competirá como
está el pobrecito.

Saludos y que se diviertan
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151120/582734a2/attachment.html>


More information about the pyar mailing list