Foros del Web » Programando para Internet » Python »

[Pygame]Controles y Animaciones

Estas en el tema de [Pygame]Controles y Animaciones en el foro de Python en Foros del Web. Hola a todos! He intentado solucionar pero no pude, busque en inet y tampoco encontre una solución. El problema es el siguiente: Las siguientes funciones ...
  #1 (permalink)  
Antiguo 27/03/2010, 15:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 50
Antigüedad: 15 años, 5 meses
Puntos: 1
[Pygame]Controles y Animaciones

Hola a todos! He intentado solucionar pero no pude, busque en inet y tampoco encontre una solución. El problema es el siguiente:

Las siguientes funciones de la clase personaje mueven y realizan la animacion de movimiento del personaje:

Código:

def animar(self, n):
self.frame_num += 1
pygame.time.delay(35)
if self.frame_num == n:
self.frame_num = 0

def update(self):

teclas_pulsadas = pygame.key.get_pressed()
dx = 0
dy = 0
pygame.key.set_repeat()


if teclas_pulsadas[K_s]:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.transformar_en_s()


if teclas_pulsadas[K_n]:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.destransformar()


if teclas_pulsadas[K_z]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/gn.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/gs.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.animar(4)



if teclas_pulsadas[K_UP]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )

self.direcion = ISO_ARR
dy = -5
self.animar(4)



elif teclas_pulsadas[K_DOWN]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )


self.direcion = ISO_ABA
dy = 5
self.animar(4)


elif teclas_pulsadas[K_LEFT]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )


self.direcion = ISO_IZQ
dx = -5
self.animar(4)

elif teclas_pulsadas[K_RIGHT]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )


self.direcion = ISO_DER
dx = 5
self.animar(4)


funcionan bien, el problema es que el jugador tiene que mantener apretado la tecla para que la animacion se concrete, y ensima cuando suelta queda en cualuquier frame.
Lo que quiero lograr es que con solo apretar una ves la tecla se concrete la animacion entera(es decir muestre las 4 fotos) y vuela a la 1.

Saludos!
__________________
Publica tus relatos
  #2 (permalink)  
Antiguo 28/03/2010, 08:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: [Pygame]Controles y Animaciones

Te recominedo que cheques esta pagina.

El ejemplo que biene esta en c++ pero puedes utilizar la misma logica para python.
  #3 (permalink)  
Antiguo 28/03/2010, 16:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 50
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: [Pygame]Controles y Animaciones

Gracias por respoder, pero no es lo que necesito, es muy probable que me haya expresado mal. En el caso del link la animación solo tiene un frame, por lo cual no tiene mi problema.
Yo, al tener 4 frames, cuando toco la tecla correspondiente comienza la animación y mientras este presionada van pasando las diferentes imagenes, pero cuando suelto la tecla se congela en cuaquier frame. Lo que quiero lograr es que con solo tocar una vez la tecla se concrete toda la animación.

Un saludo!
__________________
Publica tus relatos
  #4 (permalink)  
Antiguo 28/03/2010, 18:17
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: [Pygame]Controles y Animaciones

Te lo juro, se hace con automatas.

Pero tienes que tener bien definidos tus estados.

Si caminar es un estado y se activa cuando presiono la tecla derecha o izquierda, vamos a programarlo para que pase la animacion completa.

Con una variable que nos indique en que estado estamos y otra variable para el estado de ese estado (si esta en ejecucion o no).

Otra cosa si fueras tan amable de poner tu codigo entre las etiquetas ["CODE"][/"CODE"] (sin las comillas claro). Para que se pueda ver la identacion que tienes.

Este ejercicio ya lo habia hecho alguna vez, claro sin imagenes pero es basicamente lo mismo.

Etiquetas: animacion, pygame
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:32.