ito123456789
Usuario (Paraguay)
¡Hola! Les quiero mostrar un proyecto en el que estoy trabajando en el tiempo libre que tengo, recién empezé pero más o menos ya se hacia dónde ir.Todo está hecho con Python, la biblioteca pygame, gameobjects y Gimp para trabajar con los gráficos.La idea es hacer un juego de estrategia, pero no del tipo clásico RTS, no apunto tan alto porque así nunca termino.. Más bien es agarrar un concepto simple y trabajarlo al máximo, en este caso tomo ideas del Castle Fight (W3) y de los tower defense.Les dejo un video del progreso hasta ahora, recién genero el terreno y algunos árboles aleatorios para probar, y trabajé en el movimiento de los soldados, todavía falta optimizar mucho y al grabar parece correr más lento de lo que realmente corre. El mayor logro hasta ahora (y es poco) creo que es haber conseguido renderizar todo correctamente usando algo como un mapa de profundidades (así todo se dibuja a la profundidad correcta) y ahora estoy trabajando en separar el tiempo de la lógica del juego del tiempo de renderizado, que está limitado por la potencia de cada computadora, para poder permitir el juego en red sin mayores problemas:Si a alguien le interesa colaborar es bienvenido, sólo les pido que sean constantes. Me hace mucha falta un artista que sepa trabajar con el Gimp.Las ideas son bienvenidas también.¡Hasta pronto!Actualizaciones:Información del servidor SVN: .Avisarme cualquiera que esté interesado en participar y le doy acceso.18/9/2011:Movimiento con el mouse:1/10/2011:Scroll:
Si te perdiste la primera parte: http://www.taringa.net/posts/apuntes-y-monografias/12514642/Estoy-programando-un-juego.htmlHola de nuevo, les muestro mi último avance:link: http://www.youtube.com/watch?v=3RYadBlNCNEHice funcionar el scroll del mapa, y optimicé todo un poco de forma a que corra a una buena velocidad hasta con un montón de cosas en la pantalla siendo renderizadas.Nuevamente les invito a participar del desarrollo, especialmente me hace falta alguien que sea un buen artista y preferentemente se maneje bien con el Gimp.¡Nos vemos!
Hola de nuevo, les muestro mi último progreso. No es mucho ya que tengo exámenes actualmente y eso me hace avanzar más lento de lo normal.En lo que estoy trabajando ahora es en el tema de la interfaz de usuario (el cuadro de la parte de abajo de la pantalla en el video es donde iría el HUD principal), me falta un largo camino aún con eso, ya que hace falta desarrollar un sistema de botones, menús, etc. y después ya simplemente usar esto de acuerdo a lo que requiera el programa. Además hacer las cosas así me permitiría reutilizar este código para futuros proyectos, aunque ahora tome un poco más de tiempo.Otros cambios:- Selección de unidades con el mouse, en el estado actual es sumamente fácil agregar más unidades.- Una pantalla de carga (malísima pero funcional).Creo que una vez acabe con esto ya tengo una base para diseñar el juego en sí.Sugerencias y comentarios son bienvenidos, y más bienvenida aún es la ayuda de algún artista con el tema de la interfaz (HUD, menús) y arte conceptual para tomar una dirección más adelante.¡Hasta pronto!Posts anteriores de la serie:
¡Hola! En vista al apoyo que me dan y al éxito de los dos post anteriores, además de la cantidad de gente que me pregunto sobre como iniciarse en el tema, les dejo un regalito: el código fuente que tengo hasta ahora, sé que está super incompleto pero les puede servir como base para empezar sus propios desarrollos en Python y Pygame.Los archivos están sin licencia (a excepción de las imágenes que no son mías sino de http://www.reinerstilesets.de/ ), hagan lo que quieran con ellos.Link para descargar: http://www.ito123456789.comyr.com/files/proyes.7z Los posts a los que me refiero son (visitalos para saber de qué se trata todo):¡Muchas gracias a todos!
"Hola Mundo" con Python y GtkBuilderImportante: Reemplazar cada # por una tabulación.Hola, este es el primer tutorial que publico, espero con el tiempo mejorar mi calidad de redacción. Ahí va:Vamos a ver como crear un sencillo programa que muestre un botón y al hacer click en él despliegue el mensaje "Hola mundo". Con este ejemplo se podrán aprender los pasos que en general se van a aplicar a cualquier otro programa hecho en Python y GtkBuilder. Hacer click en las imágenes para verlas en tamaño completo.Herramientas necesarias:Para construir la interfaz gráfica, vamos a usar Glade, un constructor de interfaces Gtk+.Luego, necesitamos Python y los bindings de Gtk+ para Python.Para este tutorial vamos a usar un IDE llamado Geany, que destaca por lo liviano y rápido que resulta.Para instalar todo esto de una vez, en Debian/Ubuntu, simplemente ejecutamos el comando "sudo apt-get install python python-gtk2 glade geany" (sin comillas) en una consola. En Arch: "sudo pacman -Sy python pygtk glade geany".(Nota: si usás Debian, asegurate de tener Squeeze para adelante para que te sirva el tutorial. Debian Lenny tiene versiones muy antiguas de glade, python y python-gtk y algunas cosas podrían ser diferentes).Diseño de la interfaz:Luego de instalar todo lo necesario, vamos a diseñar la interfaz de usuario de nuestra aplicación. Para eso, abrimos Glade.En esta ventana dejamos las opciones como en la imagen y damos click a Cerrar:Ahora se nos presenta la pantalla principal de Glade:Creamos la ventana principal para nuestro programa, para eso hacemos click en la herramienta Ventana, el resultado es el siguiente:Seleccionamos el botón y en la caja de propiedades, bajo la pestaña General, le ponemos por nombre "boton" y luego buscamos la propiedad Etiqueta y le cambiamos lo que tenga por "Click aquí":Como se puede ver, lo que vaya en la propiedad Etiqueta es el texto que va a tener el botón. El nombre que le pusimos ("boton" ) nos va a servir para poder referirnos al boton y programarlo en el momento de escribir el código. Podemos ponerle cualquier nombre, lo que no es posible es dar a dos elementos distintos de la interfaz el mismo nombre.Vamos a la pestaña Señales de las propiedades de nuestro botón, y en la señal "clicked" seleccionamos el manipulador "on_boton_clicked" (enseguida explico esto):A continuación vamos a crear la ventana a mostrarse al hacer click en el botón. Para eso, creamos una nueva ventana de la misma manera en la que creamos la ventana principal y dentro de ella insertamos una etiqueta con la herramienta Etiqueta:Cambiamos el texto de la propiedad Etiqueta de nuestra etiqueta por "Hola Mundo", bajo la pestaña General de sus propiedades:Solo para hacer más fácilmente entendible todo, le cambiamos los nombres a las ventanas. Le ponemos "ventanaprincipal" a lo que era window1 y "ventanamensaje" a lo que era window2:Por último, le damos el manipulador "on_ventanaprincipal_destroy" a la señal destroy de nuestra ventana principal:Los manipuladores son la forma de llamar a las señales de cada elemento de nuestro programa a la hora de escribir el código. Por ejemplo, cuando programemos el manipulador "on_ventanaprincipal_destroy", estaremos dando las instrucciones a ser ejecutadas al momento de cerrar (destruir) la ventana principal de nuestro programa; cuando se cierre la ventana principal esta da la señal "destroy" y se ejecuta lo que hayamos programado en su manipulador. Lo mismo pasa con el boton, cuando se haga click en el este da la señal "clicked" y se ejecuta el código que escribamos en su manipulador. (Nota: esto es lo que aprendí y me funciona, y creo que se acerca mucho a lo que realmente sucede, pero podría no ser realmente la explicación más correcta sobre las señales y los manipuladores).Antes de pasar al código en sí, guardamos nuestra interfaz como "mundo.xml" en el formato GtkBuilder. Para eso nos vamos a Archivo-Guardar Como y le damos "mundo.xml" como nombre a nuestro archivo, seleccionamos GtkBuilder en formato de archivo y damos click en Guardar.Código del programa:Ahora pasamos a la parte más importante de cualquier programa: su código.Abrimos Geany:Ahora comenzamos a escribir el código:Primero importamos los módulos que vamos a utilizar:import gtkimport pygtkAhora creamos una clase que llamaremos "mundo", que va a contener los elementos del programa y las instrucciones que le vamos a dar a cada uno de los manipuladores de las señales, y comenzamos a importar los elementos de nuestra interfaz gráfica (recordate de cambiar cada # por una tabulación):#class mundo:##def __init__(self):###b= gtk.Builder()###b.add_from_file("mundo.xml" )###self.ventanaprincipal = b.get_object("ventanaprincipal" )###self.boton = b.get_object("boton" )###self.ventanamensaje = b.get_object("ventanamensaje" )###b.connect_signals(self)###self.ventanaprincipal.show()Explicando línea por línea: primero se crea la clase, luego se define el "constructor". Dentro del mismo, agregamos el archivo "mundo.xml" que habíamos creado, y empezamos a importar de ese archivo cada uno de los elementos de nuestra interfaz. Después eso se conectan las señales y se muestra la ventana principal.Vamos a definir ahora qué se hace al dar click al botón:##def on_boton_clicked(self, widget, data=None):###self.ventanamensaje.show()Simplemente se muestra la ventana "ventanamensaje", que contiene el texto "Hola Mundo" al hacer click en el botón.Ahora definimos qué hacer cuando se cierre la ventana principal:##def on_ventanaprincipal_destroy(self, widget, data=None):###gtk.main_quit()Esto indica que termina el programa.Por último, iniciamos la clase y el método gtk.main(), que se encarga de recibir las señales de los elementos de nuestra interfaz. Con estas dos líneas se da inicio al programa:mundo()gtk.main()Guardamos el archivo como "mundo.py" en la misma carpeta en la que está el archivo "mundo.xml" creado anteriormente y lo ejecutamos directamente desde Geany presionando F5:Al ejecutar el programa aparece la ventana principal con un botón. Al presionar el botón aparece otra ventana con el texto "Hola Mundo". Todo tiene una apariencia bastante mala, y vamos a ver en el siguiente tutorial como mejorar ese aspecto.Fuente: Pitonpy