[pyar] [ANN] Age of Empyres

fisa fisadev en gmail.com
Vie Nov 20 12:25:12 ART 2015


Yo tengo algo parecido, un cachito más separado nomás, porque lo de
reachable lo usaba en distintos lugares.

On Fri, Nov 20, 2015 at 9:44 AM Jose Luis Zanotti <joseluiszanotti en gmail.com>
wrote:

> Muy bueno, 250 lineas de código le mande yo, y se crashea seguido :P
>
>
>
> On 20/11/2015 9:17 a. m., Santiago Avendaño wrote:
>
>
>
> 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
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.arhttp://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
>
>
> _______________________________________________
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151120/f0f3c3ad/attachment-0001.html>


More information about the pyar mailing list