[Olpc-uruguay] Consultas Pygame

Flavio Danesse fdanesse en gmail.com
Vie Feb 19 21:32:03 EST 2010


Gabriel, el tema es que no se si se ajustará esta idea al juego que estoy
haciendo porque de todos los jugadores que participan, solo uno es el
usuario, el resto son robots que hay que controlar por tiempo para que el
usuario pueda ver que es lo que hacen.

Está bien, esperar los eventos del usuario, pero los robots hay que
enlentecerlos de lo contrario el usuario solo vería los resultados de sus
jugadas pero no entendería que fue lo que hicieron sus rivales.

Con respecto a la respuesta de Esteban, justamente eso es lo que trataba de
decir, que no funciona, que si pongo:
pygame.time.delay(1500) obtengo el mismo retardo que si pongo
pygame.time.delay(10000)


Gracias a la ayuda de ustedes, el juegó bajó de 74% de CPU a 20% y nunca
pasa del 26% en la RAM
Ya solucioné los problemas de audio que tenía.
Se que el juego es una bobada, pero la verdad que me está quedando bien
bonito, con suerte, espero poder terminarlo para abril.




El 19 de febrero de 2010 16:23, Gabriel Eirea <geirea en gmail.com> escribió:

> Flavio:
>
> A mí me resulta más útil utilizar un timer que genere un evento luego
> de transcurrido cierto tiempo. De esta forma en tu lazo principal vos
> estás esperando por eventos y cuando el timer termina lo podés
> detectar fácilmente.
>
> Ejemplo (sacado de Conozco Uruguay):
>
> # constantes
> EVENTORESPUESTA = pygame.USEREVENT+1
> TIEMPORESPUESTA = 2300
>
> # en algún lado, como respuesta a alguna acción del usuario
> pygame.time.set_timer(EVENTORESPUESTA,TIEMPORESPUESTA)
>
> # en el lazo principal
>       while 1:
>            for event in wait_events():
>                if event.type == pygame.KEYDOWN:
>                    if event.key == 27: # escape
>                        self.click.play()
>                        pygame.time.set_timer(EVENTORESPUESTA,0) #
> cancelo el timer
>                        return
>                elif event.type == pygame.MOUSEBUTTONDOWN:
>                    # acá va el código de respuesta a un clic del usuario
>                elif event.type == EVENTORESPUESTA:
>                    # primero cancelo el timer para que no se siga
> repitiendo
>                    pygame.time.set_timer(EVENTORESPUESTA,0)
>                    # acá va lo que hay que hacer una vez transcurrido el
> tiempo
>
> Es probable que te convenga pensar la lógica del juego como una
> máquina de estados y el timer lo único que hace es cambiar el estado,
> por ejemplo de "PAUSA" a "ACTIVO" o algo así.
>
> Saludos,
>
> Gabriel
>
>
>
>
>
> El día 19 de febrero de 2010 14:18, Flavio Danesse
> <fdanesse en gmail.com> escribió:
> > tengo un problemita con esto:
> >
> > pygame.time.delay(1500)
> >
> > Se supone que esto pausa el programa por determinado tiempo, segun el nº
> > entre paréntesis, sin embargo, si yo quisiera por ejemplo pausarlo por 10
> > segundos, con este metodo no lo consigo, por mas alto que sea el numero
> que
> > le ponga, nunca lo pausa más de un segundo aproximadamente.
> > Se supone que el numero entre paréntesis son milésimas de segundo ¿no?
> > Bueno, ¿como hago para pausar el programa por mas de 1 segundo?
> >
> > Otra cosa, supongamos que en el programa pasa algo y ese algo debe
> > reproducir un sonido, pero mientras se reproduce el sonido, no puede
> seguir
> > el programa. Es decir, que el programa reproduce un sonido y cuando este
> > termina de reproducirse, el programa sigue su ejecución.
> > ¿Cómo lo hago?
> >
> > En terminos generales, no me agrada tener un while infinito en un
> programa y
> > es fundamental en pygame. Preferiría tener un timer en lugar de estos
> > bucles, que se ve no van conmigo, en particular cuando hay que detenerlos
> o
> > pausarlos para continuar luego de que una condicion se ha cumplido.
> >
> >
> >
> >
> > El 17 de febrero de 2010 19:47, Federico Moreira <federico en linux.com.uy>
> > escribió:
> >>
> >> Lo que Pablo quiere decir (si entendí bien) es que mandes el método
> >> actualizar cuando haya, por ejemplo, un pygame.MOUSEBUTTONDOWN, etc y no
> por
> >> cada iteración del loop.
> >>
> >> Si sabés que el click del mouse cambia algo en la pantalla, mandate un
> >> refresh, sino, no hagas nada.
> >> _______________________________________________
> >> Olpc-uruguay mailing list
> >> 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
> >
> >
> _______________________________________________
> 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/20100220/f920ee77/attachment.htm 


More information about the Olpc-uruguay mailing list