10 respuestas

  1. Bline
    11/06/2010

    Genial tutorial adrigm, ya espero ansioso el siguiente paso. Aunque hay que decir que a pesar de seguir los pasos me da error al ejecutar el map.py diciéndome que en la línea 32 hay un error pues nPrincipal no tiene un método “attributes.get”

    Un abrazo desde Tenerife ;-)

  2. admin
    11/06/2010

    Que raro, de todas maneras en la próxima entrega subiré lo que yo llevo hasta ahora para que comprueben que todo esta igual.

    Otro abrazo desde Gran Canaria ;)

  3. Bline
    11/06/2010

    El error, no se por qué lo da desde el childNode[0], si cambio el índice por 1 me imprime sin problemas lo que yo quiera, en este caso siguiendo el EngineIX el nombre del tileset.

  4. inedit00
    12/06/2010

    adrigm, me pregunto porque usas XML para leer los datos y no utilizas estructuras JSON. Para no tener que hacer el doloroso ejercicio de tener que recorrerte las clases hijas y extraer la información que necesitas de un XML lo puedes guardar en un diccionario de python que sería algo así:

    maps = {
    ____”width”:22,
    ____”heigth”:44,
    ____”data”: {
    ________”tileset”: {
    ____________”width”:3,
    ____________”height”:3,
    ____________”nombre”:”nombre1″,
    ________},
    ________”layer”:”datos de layer”
    ________”objectgroup”: {
    ____________”x”: 44,
    ____________”y”: 22,
    ________}
    ____}
    }

    Par guardar:
    import simplejson as json
    f = open(‘mapa1.tmx’, ‘w’)
    f.save(json.dumps(maps))
    f.close()

    Para leer:
    f = open(‘mapa1.tmx’, ‘r’)
    data = eval(f.save(json.loads(f.read())))
    f.close()

    Y así tienes una estructura facilmente accesible, de modo que aciendo un
    “data[‘width’]” tienes el with, o haciendo un:
    “data[‘data’][‘objectgroup’][‘x’]” tienes “44”

    Todo tipos de datos nativos en python, facilmente manejables. Es solo un humilde comentario, sin ánimo de cambiar nada, solo dar otro enfoque al mismo problema. Saludos!

  5. admin
    12/06/2010

    inedit00, pues no conocía JSON, parece una buena idea, aunque de la forma que yo lo he hecho tengo mas control sobre que quiero y no quiero extraer y modificarlo a mi gusto. Pero claro teniéndolo todo en un diccionario es también fácilmente manejable y modificable.

    Miraré esto y veré si es mejor para el engine. Sí es así, lo implementamos.

    Muchas gracias por colaborar, que bonito sería que este engine fuera un poquito de todos.

    Un saludo.

  6. inedit00
    12/06/2010

    Gracias, admin. La verdad que es algo muy fácil de implementar, y són estructuras completamente nativas en Python. Todos los tipos de datos que puedas ser convertidos a string, se pueden pasar a un JSON ( Pronunciado Jeison ). Tienen la ventaja de que puedes persistir en el disco el estado de determinadas variables: Por ejemplo, una estructura así sería facilmente convertida a un JSON:

    data {
    ____”nombre”:”admin”
    ____”apellido”:”istrador”
    ____”telefonos”:[“75566″, “+34-887744″]
    }

    Si queremos ampliar los datos, se puede hacer de este modo:
    data[“edad”] = 20

    Así nos quedaría algo así:
    data {
    ____”nombre”:”admin”
    ____”apellido”:”istrador”
    ____”telefonos”:[“75566″, “+34-887744″]
    ____”edad”:20
    }

    La ventaja es que con JSON, se convierten estos datos a string, y así se persisten el el disco, de modo que podemos prescindir de utilizar estructuras “complejas” como el XML.

    Sobre el “coste” que tu dices, es algo irrelevante. Me explico: Si tu tienes un XML, cuando se lee de disco y se envía a “minidom.parse()”, se tiene que parsear todo el fichero. Osea, que lo tienes que cargar todo en memória igual. Parsear XML no es ( computacionalmente hablando ) algo barato. Mucho mas rapido el “eval” de Python.

    Claro está que todo tiene inconvenientes. Entre ellos, que no te da la facilidad de enviar los datos a otro programa hecho con Java, o PHP, por ejemplo, ya que XML ( desgraciadamente ) está mas “estandarizado”. Aún así existen librerías de JSON en la mayoría de los lenguajes.

    Pero bueno, si solo se va a trabajar en Python, es una muy buena elección. Saludos!

  7. Mike
    07/01/2013

    Hola, tengo una pregunta.

    Sabras como solucionar este problema:

    raise IOError, ‘Not a gzipped file’
    IOError: Not a gzipped file

    La verdad te agradeceria muchisimo si me ayudas :)

    Saludos!

    • Mike
      07/01/2013

      Listo! Ya lo solucione, igual, gracias :D

      • gera gon
        16/09/2015

        Tengo el mismo error como le hiciste

  8. FDX
    23/05/2019

    Saludos Adgrim.

    En Python estas librerias ya binen por defecto: “base64″ y “gzip”.

    Es decir como seria lo mismo pero en C++ ???

    Gracias !!!

Responder

 

 

 

Volver arriba
móvil escritorio