[Olpc-uruguay] Sobre Pygame

Fabian Peña fapenia en adinet.com.uy
Lun Ene 18 15:24:54 EST 2010


Flavio Danesse escribió:
> Hola Pablo y demás muchachada.
>
> Estaba viendo eso mismo, de dibujar partes de la pantalla y demás, 
> pero hay bastante para ver todavía.
>
> Hay cosas que todavía no entiendo bien, por ejemplo, supongamos que 
> tengo un mapa grande, muy grande y en la pantalla solo quiero ver una 
> parte, pero cuando mueva el mouse hacia los lados poder recorrer el 
> mapa y ver las zonas que están fuera de la pantalla.
> Es como si me moviera sobre el mapa, todavia no lo he hecho, pero 
> imagino que tendría que cargar la imagen y hacer una máscara del 
> tamaño de la pantalla y mover la máscara sobre el mapa para poder 
> desplazarme (no se si se entendió).
>

algo asi como pantalla.blit(mapa,
                                        (0,0)       coordenada de 
destino en pantalla
                                        rectangulo_origen)       este es 
el que vas recalculando el x e y acorde a como se mueve el mouse 
aumentarias x cada tanto movimiento del mouse

ese es el metodo facil, copias toda el area , para no gastar todo el 
tiempo de cpu en eso , habria que hacer algo mas optimo por ejemplo 
scrollear ( en assembler lo mas seguro o tal vez C ) una superficie sdl 
y solo copiar del mapa los cuadrados necesarios en 1 o 2 bordes de la 
pantalla que queda "sucios" por el scroll.





> Estuve viendo como hacer menús y eso ya lo tengo claro.
>
> Con lo que no me encuentro es con el bucle del juego, porque si cargo 
> un menu tengo que capturar eventos del mouse y teclado sobre los 
> objetos del menú, pero cuando elijo "jugar", preferiría cambiar de 
> bucle pero no se como hacerlo, es complicado tener todo en un solo 
> bbucle porque tengo que pensar que objetos hay en pantalla en todo 
> momento y asignar los eventos de mouse y teclado según eso.
>
> Quisiera tener el menú con su "captura de eventos" y al elegir "jugar" 
> llamar eal juego con su bucle principal, es lo mismo que cuando 
> cambias de nivel, no encuentro como parar ese bucle sin que se termine 
> el juego.
>
Bueno supongo que tenes una funcion o clase que dibuja el menu y procesa 
los eventos , cuando detectas que el usuario hizo click en una de las 
opciones
podria simplemente llamar a la funcion o instanciar el objeto para jugar 
y darle el control a la funcion que maneja eventos cuando estas en ese nivel
cuando termina el nivel , sale y seguis dentro del bucle del menu ( 
redibujas el menu una vez ) y estas listo para lo que siga
No es la unica manera de hacerlo.


> PD:
> Estoy seguro que debe ser una bobada esto del bucle.
>
> Por lo que yo veo, pygame es excelente para emulaciones tipo "el ciclo 
> del agua", "la clorofila", emulación de gravedad y cosas de físicas, 
> esas cosas, que no requieren una interacción permanente como sería un 
> juego tipo galaxian.
> Me imagino buenas cosas con mapas, dibujo, geometría y edición de 
> imágenes etc.
>
> No lo miro tanto como herramienta para juegos a no ser juegos de 
> tablero, porque el rendimiento no es bueno, me hubiera gustado hacer 
> algo con blender y pygame pero en la xo no tenemos py3d y seguramente 
> si lo tuviera el rendimiento sería mucho peor.
>
> De todas maneras pygame está muy bueno para hacer actividades de clase 
> en la xo, probablemente sea la mejor herramienta para nosotros en este 
> sentido.
>

> Estuve mirando el tema de la integración con gtk y es muy mala, no es 
> buena idea porque se complica la captura de eventos en pygame y gtk al 
> mismo tiempo lo cual es una lástima porque si se pudiera hacer bien se 
> ganaría mucho tiempo y diseño.
>
> En cuanto a la integración de pygame con sugar, no lo he logrado 
> porque hay que bajarse un paquete de olpc y hacer unos malabares 
> barbaros con el, pero me imagino que si no se integra bien a gtk 
> tampoco lo hará a sugar.
>
Bueno el paquete que yo baje de OLPC  me dio algunos problemitas , al 
final me copie el que venia con Conozca Uruguay y ese funciono OK


>
>
>
>
>
>
>
>
>
> El 18 de enero de 2010 13:31, Pablo Moleri <pmoleri en gmail.com 
> <mailto:pmoleri en gmail.com>> escribió:
>
>     Hola,
>
>     Si tenés problemas de performance lo primero que tenés que hacer
>     es tratar de utilizar un grupo de sprites optimizado y no dibujar
>     todo el fondo en cada frame.
>
>     Fijate en la referencia de PyGame:
>     http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.RenderUpdates
>     Ahí tenés herramientas que te facilitan el actualizar sólo las
>     áreas de la pantalla donde hubieron cambios.
>
>     Saludos,
>     Pablo
>
>     2010/1/16 Flavio Danesse <fdanesse en gmail.com
>     <mailto:fdanesse en gmail.com>>
>
>         *Hola gente.*
>
>         He estado jugando con pygame y la verdad es que está bueno y
>         muy muy facil, se presta muchisimo para hacer actividades
>         interactivas en la xo, en particular me quedé pensando en la
>         idea que alguien en la lista tenía para hacer una actividad
>         sobre astronomía.
>
>         Está buenísimo para hacer cosa sobre física, quimica, etc. . .
>         Se pueden hacer buenas emulaciones con pygame.
>
>         En cuanto a los juegos, que se supone que es para eso el
>         paquete, al menos lo que yo he hecho, anda bastante lento, le
>         cuesta mucho a la xo correr estas cosas.
>
>         Les paso en adjunto en archivo zipeado el jueguito que empecé
>         a hacer para aprender (no se si conviene seguirlo o hacer otra
>         cosa mas provechosa, la idea era solo aprender pygame).
>         Son 3 archivos de código, donde tendrán que modificar las
>         referencias a las imágenes para que les funcione en sus PC
>         (son solo 3 imagenes)
>
>         deben ejecutar el archivo BatallaEspacial.py
>
>         *Hice simplemente:*
>
>            1. una pantalla con una imagen de fondo.
>            2. una nave nodriza
>            3. nueve naves tipo caza
>
>
>         La nave principal se mueve con el mouse, las naves cazas se
>         mantienen en formación a una distancia determinada de la nave
>         principal.
>         Al presionar la tecla 1 las naves se forman de una manera y al
>         presionar 2 se forma de otra manera diferente.
>         Al presionar la tecla a las naves se separan entre si, al
>         presionar la tecla z las naves se acercan entre si.
>
>
>         Si les dá la voluntad de probarlo y mirarlo, agradecería
>         consejos para mejorar y hacer más eficiente el código y
>         perdonen si molesto por mandar esto a la lista.
>
>         _______________________________________________
>         Olpc-uruguay mailing list
>         Olpc-uruguay en lists.laptop.org
>         <mailto:Olpc-uruguay en lists.laptop.org>
>         http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
>     _______________________________________________
>     Olpc-uruguay mailing list
>     Olpc-uruguay en lists.laptop.org <mailto:Olpc-uruguay en lists.laptop.org>
>     http://lists.laptop.org/listinfo/olpc-uruguay
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>   

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20100118/7915c1a8/attachment.htm 


More information about the Olpc-uruguay mailing list