[Pedido] Manualito de pygame orientado a Objetos

Solicite, consulte o publique recursos de referencia para desarrolladores.

[Pedido] Manualito de pygame orientado a Objetos

Notapor yyeshua » Mié Ago 27, 2008 6:32 pm

Hola a todos... Bueno, pues verá, soy programador Java y recien acabo de comenzar a aprender python para escribir una serie de juegos "a la vieja escuela".

Un grupo de amigos y yo nos hemos organizado para formar un proyecto (www.cogamon.net) y escribir juegos bidimensionales como los de los viejos tiempos, pero con gráficos actuales, una serie que llamamos "Como en la vieja escuela".

Yo soy el programador del equipo (Un grafista, un músico y una traductora me compañan) y pues había decidio tratar de hacerlo en un game engine para Java.... desgraciadamente los que he encontrado o están incompletos, o ya están muy viejitos, etc.

El caso es que pygame se acopla a nuestras necesidades, pero yo estoy acostumbrado a la programación estricta así que me cuesta un poquito acostumbrarme a python y a no escribir punto y coma.

Desde luego, como programador Java estoy acostumbrado a manejar todo como un objeto.
Pero todos los artículos y ejemplos explicativos que he ecnotrado de pygame lo hacen con mera programación estructurada y en un sólo archivo...

Por eso vengo a pedir ayuda, a ver si alguien me explica o se arma un minimanualito de pygame orientado a objetos y a trabajar con varios ficheros fuentes.

Me he bajado varios ejemplos de esta web, pero sin explicación quedo con duda...

Por ejemplo, siempre se crean clases pero como python no es necesario la declaración de variables no me acomodo, quisiera que alguien me explique como declarar una clase en un archivo de python. Ya sabe, sólo la definición de la clase.
Y como importo y trabajo con las clases de otros archivos al archivo que tiene el main... y hablando del main ¿puede ir el main en una clase cómo un método, así como en Java?.

También he visto cerca de 4 formas diferentes de llamar el main:

def main():
bla
bla

main() #una forma, me parece lógica.
if __name_:'__main__':main()# a esta cosa no le veo sentido, que alguien me lo explique por favor.

Y otras que no me acuerdo ahorita XD

También en los ejemplos veo que importan pygame y que utilizan pygame directamente como un objeto @.@ sin instanciarlo... ¿me lo explican por favor?

Y bueno, tengo más preguntas, pero mejor las hago después porque aquí es medio día y quier almorzar. :roll:

Saludos desde HN :D
Avatar de Usuario
yyeshua
 
Mensajes: 3
Registrado: Mié Ago 27, 2008 3:59 am

Re: [Pedido] Manualito de pygame orientado a Objetos

Notapor hugoruscitti » Mié Ago 27, 2008 7:26 pm

yyeshua escribió:Por eso vengo a pedir ayuda, a ver si alguien me explica o se arma un minimanualito de pygame orientado a objetos y a trabajar con varios ficheros fuentes.


Saludos, hay varios manuales que explican como utilizar
python orientado a objetos. Buscando por ahí encontré
uno que parece interesante:

http://blog.rvburke.com/2006/11/22/prog ... en-python/

claro, no habla específicamente de pygame dado que pygame
es solo una biblioteca para hacer juegos, quien provee la
orientación a objetos es python, el lenguaje de programación.


yyeshua escribió:También he visto cerca de 4 formas diferentes de llamar el main:

def main():
bla
bla

main() #una forma, me parece lógica.
if __name_:'__main__':main()# a esta cosa no le veo sentido, que alguien me lo explique por favor.


Resulta que en python tu elijes como llamar al programa principal,
si quieres puedes colocar las sentencias alineadas a la izquierda
y esas serán las que se ejecutarán.

Muchos programadores escriben una función llamada "main"
(casi por tradición), y luego escriben al pie del script lo siguiente:

Código: Seleccionar todo
if __name__ == '__main__':
    main()


La sentencia "if" nos permite diferenciar dos casos:

    1 - cuando es script se ejecuta directamente desde el intérprete,
    por ejemplo haciendo doble click sobre el archivo ".py" desde
    el navegador de archivos o cuando escribimos
    "python archivo.py" desde una consola. Python nos avisa que
    esto ocurre dando el valor "__main__" a la variable
    "__name__".

    2 - en cambio, si el archivo .py no se ejecuta directamente desde
    el intérprete (por ejemplo, si se incluye desde otro archivo
    como módulo usando "import") esta variable "__name__"
    tendrá el nombre del archivo actual.

Ahora, ¿que tiene de útil?. Simple: te permite colocar código
de prueba a cada uno de los archivos de tu proyecto, así te
aseguras que cada uno de los componentes del programa
funciona por separado:

http://es.wikibooks.org/wiki/Inmersión_en_Python/Su_primer_programa_en_Python/Prueba_de_módulos

También en los ejemplos veo que importan pygame y que utilizan pygame directamente como un objeto @.@ sin instanciarlo... ¿me lo explican por favor?


Si, pygame es un módulo por lo tanto luego de escribir
"import pygame", puedes acceder a una especie de contenedor
que tiene variables, funciones, objetos e incluso otros módulos.

Por ejemplo, escribiendo "dir(pygame)" conocerás todo lo que contiene
el módulo, con "help(pygame)" se te muestra una ayuda del módulo... etc.

Y bueno, tengo más preguntas, pero mejor las hago después porque aquí es medio día y quier almorzar. :roll:

Saludos desde HN :D


Ah, bueno. Estaremos por aquí ante cualquier consulta, ¡bienvenido!.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Pygame y OpenGL

Notapor yyeshua » Mar Sep 02, 2008 10:55 pm

Bueno, por fin, después de bastante ajetreo tengo tiempo libre, y así estaré durante un rato, jeje.

Bueno, quizá ya está un manual por allí, pero mejor pregunto.

Estoy escribiendo un juego en python con pygame, bien, esa es la parte fácil. ¿Cómo hago para que se dibuje con OpenGL?.
Espero darme a entender, generalmente al usar pygame solito quien se encarga de dibujar es el cpu, pero si se dibuja con OpenGL quien dibuja es el gpu, así que hay un incremento considerable en el rendimiento.

Me gustaría saber como dibujar entonces con OpenGL.
¿Sugerencias?
Avatar de Usuario
yyeshua
 
Mensajes: 3
Registrado: Mié Ago 27, 2008 3:59 am

Re: Pygame y OpenGL

Notapor hugoruscitti » Mié Sep 03, 2008 1:54 pm

yyeshua escribió:Me gustaría saber como dibujar entonces con OpenGL.
¿Sugerencias?


Para dibujar en dos dimensiones usando OpenGL seguramente
te resultará mas sencillo utilizar una biblioteca como pyglet:

http://www.pyglet.org/

y si quieres algunas facilidades como "acciones", "gestión de
escenas", "efectos de partículas" etc... podrías utilizar en forma
conjunta las bibliotecas pyglet y cocos2d:

http://cocos2d.org/

junto a Walter Velazquez habíamos hecho un juego en 7 días
llamado "I Robot?" usando estas bibliotecas:

http://www.loosersjuegos.com.ar/foro/vi ... .php?t=279

Ah, y si quieres usar todo lo que te provee pygame y
añadir soporte para imprimir con OpenGL creo que lo
mas cercano es utilizar "rabbyt":

http://matthewmarshall.org/projects/rabbyt/

No se si existe una forma mas directa de integrar las capacidades
de OpenGL a un programa en pygame, si alguno de ustedes
lo sabe por favor avisen.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor yyeshua » Mié Sep 03, 2008 4:43 pm

mmm... interesante. Voy a checar los enlaces, jejeje.
Por mientras leo, otra pregunta:

¿Cómo manejar sprites animados con pygame?.
En java estoy estudiando el GTGE (Golden T Game Engine) XD
Este tiene una clase llamada AnimatedSprite.
Así que para crear un sprite animado sólo debo crear un objeto de este tipo y pasarle un arreglo de ImageBuffered. y los FPS de la animación. La clase se encarga de hacer el resto.

¿Se puede hacer eso con pygame o con alguna de las librerias que mencionaste?

Gracias por la ayuda.
Saludos.
Avatar de Usuario
yyeshua
 
Mensajes: 3
Registrado: Mié Ago 27, 2008 3:59 am

Notapor endaramiz » Mié Sep 03, 2008 11:59 pm

yyeshua escribió:¿Cómo manejar sprites animados con pygame?.
En java estoy estudiando el GTGE (Golden T Game Engine) XD
Este tiene una clase llamada AnimatedSprite.
Así que para crear un sprite animado sólo debo crear un objeto de este tipo y pasarle un arreglo de ImageBuffered. y los FPS de la animación. La clase se encarga de hacer el resto.

¿Se puede hacer eso con pygame o con alguna de las librerias que mencionaste?

Gracias por la ayuda.
Saludos.
Hola en esta misma web hay mucha información para aprender. Hay un ejemplo llamado Artillery que muestra un Sprite bastante simple, supongo que lo podrás entender fácilmente (si no, siempre puedes preguntar). Luego tienes el de plataformas que es más complejo pero al ser un autómata te será más útil para tus futuros juegos. Si no lo has hecho ya, deberías leer la documentación de Pygame para comprender mejor el código[1]. Puede que algunas bibliotecas te den más "facilidades" a la hora de crear sprites pero es menos adaptable que si lo escribes tú, depende de los gustos (en pygame me tocó hacer una simulación de Sprite para uso más personalizado y tampoco resultó difícil).

Hay un tema que trató sobre la animación, puede que te sea útil para los sprites. [2]

Respecto a lo de openGL, yo también estuve buscando información pero no encontré gran cosa, aunque se supone que se puede hacer. Si descubres algo avisa, yo volveré a probar a ver si tengo más suerte.

Me gusta la idea de juegos a "la vieja escuela" (con herramientas modernas xD). Yo también la comparto, aunque pienso que no hace falta que sea muy vieja. Hace no mucho, se han hecho buenos juegos para las consolas portátiles (me vienen a la cabeza Metroid y Golden Sun), pero la dirección actual de Nintendo... (supongo que me entendéis). Os deseo mucha suerte, incluso os echaría una mano en pygame si queréis, pero la facultad no creo que me deje mucho tiempo libre :(.

[1]http://www.pygame.org/docs/ref/sprite.html
[2]http://www.losersjuegos.com.ar/foro/viewtopic.php?t=165&highlight=animaci%F3n

Pd: acabo de encontrar ejemplos de PyOpenGl y PyGame y tiene buena pinta, aunque no los he mirado a fondo (ya es tarde y estoy cansado).
http://disruption.ca/gutil/introduction.html
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona


Volver a Artículos, traducciones y documentación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados