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.<br>
<br>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.<br><br>Con respecto a la respuesta de Esteban, justamente eso es lo que trataba de decir, que no funciona, que si pongo:<br>
<tt><tt> <span style="color: rgb(153, 0, 0);">pygame.time.delay(1500)</span></tt></tt> obtengo el mismo retardo que si pongo <tt><tt> <span style="color: rgb(153, 0, 0);">pygame.time.delay(10000)</span></tt></tt><br><br><br>
Gracias a la ayuda de ustedes, el juegó bajó de 74% de CPU a 20% y nunca pasa del 26% en la RAM<br>Ya solucioné los problemas de audio que tenía.<br>Se que el juego es una bobada, pero la verdad que me está quedando bien bonito, con suerte, espero poder terminarlo para abril.<br>
<br><br><br><br><div class="gmail_quote">El 19 de febrero de 2010 16:23, Gabriel Eirea <span dir="ltr"><<a href="mailto:geirea@gmail.com">geirea@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Flavio:<br>
<br>
A mí me resulta más útil utilizar un timer que genere un evento luego<br>
de transcurrido cierto tiempo. De esta forma en tu lazo principal vos<br>
estás esperando por eventos y cuando el timer termina lo podés<br>
detectar fácilmente.<br>
<br>
Ejemplo (sacado de Conozco Uruguay):<br>
<br>
# constantes<br>
EVENTORESPUESTA = pygame.USEREVENT+1<br>
TIEMPORESPUESTA = 2300<br>
<br>
# en algún lado, como respuesta a alguna acción del usuario<br>
pygame.time.set_timer(EVENTORESPUESTA,TIEMPORESPUESTA)<br>
<br>
# en el lazo principal<br>
while 1:<br>
for event in wait_events():<br>
if event.type == pygame.KEYDOWN:<br>
if event.key == 27: # escape<br>
self.click.play()<br>
pygame.time.set_timer(EVENTORESPUESTA,0) #<br>
cancelo el timer<br>
return<br>
elif event.type == pygame.MOUSEBUTTONDOWN:<br>
# acá va el código de respuesta a un clic del usuario<br>
elif event.type == EVENTORESPUESTA:<br>
# primero cancelo el timer para que no se siga repitiendo<br>
pygame.time.set_timer(EVENTORESPUESTA,0)<br>
# acá va lo que hay que hacer una vez transcurrido el tiempo<br>
<br>
Es probable que te convenga pensar la lógica del juego como una<br>
máquina de estados y el timer lo único que hace es cambiar el estado,<br>
por ejemplo de "PAUSA" a "ACTIVO" o algo así.<br>
<br>
Saludos,<br>
<br>
Gabriel<br>
<br>
<br>
<br>
<br>
<br>
El día 19 de febrero de 2010 14:18, Flavio Danesse<br>
<<a href="mailto:fdanesse@gmail.com">fdanesse@gmail.com</a>> escribió:<br>
<div><div></div><div class="h5">> tengo un problemita con esto:<br>
><br>
> pygame.time.delay(1500)<br>
><br>
> Se supone que esto pausa el programa por determinado tiempo, segun el nº<br>
> entre paréntesis, sin embargo, si yo quisiera por ejemplo pausarlo por 10<br>
> segundos, con este metodo no lo consigo, por mas alto que sea el numero que<br>
> le ponga, nunca lo pausa más de un segundo aproximadamente.<br>
> Se supone que el numero entre paréntesis son milésimas de segundo ¿no?<br>
> Bueno, ¿como hago para pausar el programa por mas de 1 segundo?<br>
><br>
> Otra cosa, supongamos que en el programa pasa algo y ese algo debe<br>
> reproducir un sonido, pero mientras se reproduce el sonido, no puede seguir<br>
> el programa. Es decir, que el programa reproduce un sonido y cuando este<br>
> termina de reproducirse, el programa sigue su ejecución.<br>
> ¿Cómo lo hago?<br>
><br>
> En terminos generales, no me agrada tener un while infinito en un programa y<br>
> es fundamental en pygame. Preferiría tener un timer en lugar de estos<br>
> bucles, que se ve no van conmigo, en particular cuando hay que detenerlos o<br>
> pausarlos para continuar luego de que una condicion se ha cumplido.<br>
><br>
><br>
><br>
><br>
> El 17 de febrero de 2010 19:47, Federico Moreira <<a href="mailto:federico@linux.com.uy">federico@linux.com.uy</a>><br>
> escribió:<br>
>><br>
>> Lo que Pablo quiere decir (si entendí bien) es que mandes el método<br>
>> actualizar cuando haya, por ejemplo, un pygame.MOUSEBUTTONDOWN, etc y no por<br>
>> cada iteración del loop.<br>
>><br>
>> Si sabés que el click del mouse cambia algo en la pantalla, mandate un<br>
>> refresh, sino, no hagas nada.<br>
>> _______________________________________________<br>
>> Olpc-uruguay mailing list<br>
>> <a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
>> <a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
>><br>
><br>
><br>
> _______________________________________________<br>
> Olpc-uruguay mailing list<br>
> <a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
> <a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
><br>
><br>
_______________________________________________<br>
Olpc-uruguay mailing list<br>
<a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
<a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
</div></div></blockquote></div><br>