Foros del Web » Programando para Internet » Python »

Problema con un codigo en pygame

Estas en el tema de Problema con un codigo en pygame en el foro de Python en Foros del Web. Tengo un problema que no puedo solucionar..... sera que todavia soy novato en python.... bueno el problema es que cuando se ejecuta el codigo la ...
  #1 (permalink)  
Antiguo 06/11/2011, 15:37
 
Fecha de Ingreso: noviembre-2011
Mensajes: 26
Antigüedad: 13 años, 1 mes
Puntos: 0
Problema con un codigo en pygame

Tengo un problema que no puedo solucionar..... sera que todavia soy novato en python....

bueno el problema es que cuando se ejecuta el codigo la pelota se dibuja infinitamente sin parar y yo solo quiero que se dibuje solo una ..... disculpen si es una pregunta muy novata para este foro es que recien empiezo y no le veo la solucion desde lo que yo se....
Código Python:
Ver original
  1. #Importaciones
  2. from pygame.locals import *
  3. import os
  4. import pygame
  5. import sys
  6.  
  7. #Constantes
  8. Resolucion=800
  9. Resolucion2=600
  10.  
  11. #Creacion de sprites y clases de objetos
  12. class Pelota(pygame.sprite.Sprite):
  13.     def __init__(self):
  14.         pygame.sprite.Sprite.__init__(self)
  15.         self.image=pygame.image.load("bola.png")
  16.         self.rect=self.image.get_rect()
  17.         self.rect.centerx=Resolucion /2
  18.         self.rect.centery=Resolucion2 /2
  19.         self.speed=[3,3]
  20.     def actualizar(self,time):
  21.         self.rect.centerx += self.speed[0]*time
  22.         self.rect.centery += self.speed[1]*time
  23.         if self.rect.left <= 0 or self.rect.right >= Resolucion:
  24.             self.speed[0] = -self.speed[0]
  25.             self.rect.centerx += self.speed[0]*time
  26.         if self.rect.top <= 0 or self.rect.bottom >= Resolucion2:
  27.             self.speed[1] = -self.speed[1]
  28.             self.rect.centery += self.speed[1]*time
  29.        
  30.  
  31. #Fucion principal del juego
  32. def main():
  33.     #Surface del juego
  34.     visor=pygame.display.set_mode((Resolucion,Resolucion2),0,32)
  35.     pygame.display.set_caption("Classic pong")
  36.     running=True
  37.     #Cargamos objetos
  38.     bola=Pelota()
  39.     clock=pygame.time.Clock()
  40.     #Bucle principal del juego
  41.     while running:
  42.         time=clock.tick(60)
  43.         bola.actualizar(time)
  44.         #Actualizamos la pantalla
  45.         visor.blit(bola.image,bola.rect)
  46.         pygame.display.flip()
  47.         #Entradas de teclado y mouse
  48.         for evento in pygame.event.get():
  49.             if evento.type== KEYDOWN and evento.key==K_ESCAPE:
  50.                 running = False
  51.                 return 0
  52.                
  53. if __name__=="__main__":
  54.     pygame.init()
  55.     main()
  #2 (permalink)  
Antiguo 06/11/2011, 20:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Problema con un codigo en pygame

Código Python:
Ver original
  1. #Importaciones
  2. from pygame.locals import *
  3. import os
  4. import pygame
  5. import sys
  6.  
  7. #Constantes
  8. Resolucion=800
  9. Resolucion2=600
  10.  
  11. #Creacion de sprites y clases de objetos
  12. class Pelota(pygame.sprite.Sprite):
  13.     def __init__(self):
  14.         pygame.sprite.Sprite.__init__(self)
  15.         self.image=pygame.image.load("bola.png")
  16.         self.rect=self.image.get_rect()
  17.         self.rect.centerx=Resolucion /2
  18.         self.rect.centery=Resolucion2 /2
  19.         self.speed=[3,3]
  20.     def actualizar(self,time):
  21.         self.rect.centerx += self.speed[0]*time
  22.         self.rect.centery += self.speed[1]*time
  23.         if self.rect.left <= 0 or self.rect.right >= Resolucion:
  24.             self.speed[0] = -self.speed[0]
  25.             self.rect.centerx += self.speed[0]*time
  26.         if self.rect.top <= 0 or self.rect.bottom >= Resolucion2:
  27.             self.speed[1] = -self.speed[1]
  28.             self.rect.centery += self.speed[1]*time
  29.        
  30.  
  31. #Fucion principal del juego
  32. def main():
  33.     #Surface del juego
  34.     visor=pygame.display.set_mode((Resolucion,Resolucion2),0,32)
  35.     pygame.display.set_caption("Classic pong")
  36.     running=True
  37.     #Cargamos objetos
  38.     bola=Pelota()
  39.     clock=pygame.time.Clock()
  40.     #Bucle principal del juego
  41.     while running:
  42.         time=clock.tick(60)
  43.         bola.actualizar(time)
  44.         #Actualizamos la pantalla
  45.         visor.fill((0, 0, 0))
  46.         visor.blit(bola.image,bola.rect)
  47.         pygame.display.flip()
  48.         #Entradas de teclado y mouse
  49.         for evento in pygame.event.get():
  50.             if evento.type== KEYDOWN and evento.key==K_ESCAPE:
  51.                 running = False
  52.                 return 0
  53.                
  54. if __name__=="__main__":
  55.     pygame.init()
  56.     main()
Lo que tienes que hacer es limpiar la pantalla antes de poner la imagen en la pantalla, para generar la ilusión de una animación.

Etiquetas: 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




La zona horaria es GMT -6. Ahora son las 08:23.