Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/03/2012, 12:56
Avatar de eMaa
eMaa
 
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema pygame

Hola razpeitia, gracias por contestarme


mira aca arregle mucho de los errores que me marcabas (usé sprite con imagen y rectangulo) y mas allá de haber podido comprobar que las coordenadas se mueven bien no logro mover visualmente al personaje, no entiendo porque no se redibuja

Código:
import pygame
import Personaje

class Principal:


    def __init__(self):
        pygame.display.init()
        pygame.display.set_icon(pygame.image.load("favicon.png"))
        self.personaje = Personaje.Personaje("wowo","Mago","Elfo",100,100)
        self.personajeSprite = self.personaje.draw()
        self.tamaño = (1000,650)
        self.ventanaPrincipal = pygame.display.set_mode(self.tamaño)
        self.reloj=pygame.time.Clock()

    def draw(self):
        '''
        Descripcion: Crea la ventana,Setea el titulo de la ventana,Agrega al personaje
        Retorna: nada
        Argumentos: no tiene
        '''
        self.ventanaPrincipal.fill((255,255,255))
        pygame.display.set_caption("Fatum Online") 
        self.ventanaPrincipal.blit(self.personajeSprite.image,self.personajeSprite.rect)
        pygame.display.flip()

    def capturarEventos(self):
        '''
        Descripcion: Crea un bucle que se encarga de tomar los eventos y toma desiciones en torno a ellos
        Retorna: None
        Argumentos: no tiene
        '''
        #Un bucle para mantener la ventana y tomar los eventos
        while True:
            self.reloj.tick()
            #Aqui checamos todos los eventos que ocurrieron
            for e in pygame.event.get():
                self.reloj.tick(60)
                #Si existen tomo los eventos del teclado
                if e.type == pygame.KEYDOWN:
                    #Cuando se pulse en las felchas de teclado seteamos la posicion del personaje y su visualizacion en pantalla
                    if e.key == pygame.K_DOWN:
                        self.personaje.mover(0,-10)
                        pygame.display.update()
                        
                    if e.key == pygame.K_UP:
                        self.personaje.mover(0,10)
                        pygame.display.update()
                        
                    if e.key == pygame.K_RIGHT:
                        self.personaje.mover(10,0)
                        pygame.display.update()
                        
                    if e.key == pygame.K_LEFT:
                        self.personaje.mover(-10,0)
                        pygame.display.update()
                        
                    if e.key == pygame.K_ESCAPE:
                        pygame.display.quit()
                #Si el tipo del evento es QUIT (o salir) entonces termina el ciclo
                if e.type == pygame.QUIT:
                    pygame.display.quit()
                    break
        


#Inicia el objeto principal
principal = Principal()
principal.draw()
principal.capturarEventos()

La clase personaje:
Código:
import pygame

class Personaje:


    def __init__(self,nombre,clase,raza,posicionX,posicionY):
        #Atributos de dibujo
        self.cuerpoImagen = pygame.image.load("personaje.png")
        self.cuerpoImagen = pygame.image.load("personaje.png")
        self.cuerpoRect = self.cuerpoImagen.get_rect()
        self.cuerpoRect.top = posicionY
        self.cuerpoRect.left = posicionX
        self.cuerpoSprite = pygame.sprite.Sprite()
        self.cuerpoSprite.image = self.cuerpoImagen
        self.cuerpoSprite.rect = self.cuerpoRect
        #Atributos del personaje
        self.nombre = nombre
        self.clase = clase
        self.raza = raza

    def draw(self):
        '''
        Devuelve el cuerpo del personaje
        '''
        return self.cuerpoSprite

    def getPosicionX(self):
        '''
        Retorna la posicion en X
        '''
        return self.cuerpoRect.left

    def getPosicionY(self):
        '''
        Retorna la posicion en Y
        '''
        return self.cuerpoRect.top

    def mover(self,x,y):
        '''
        Altera al posicion del personaje
        '''
        self.cuerpoSprite.rect.move_ip(x,y)