13/03/2012, 12:56
|
| | | 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)
|