[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