12/03/2012, 16:58
|
| | | Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 16 años, 1 mes Puntos: 1 | |
Problema pygame Tengo la siguiente clase "Principal" que define la ventana principal del juego. El problema es que al querer mover mi "Personaje" la imagen que lo representa no cambia su posicion. Estoy seguro que el problema es el repintado de la ventana pero no se donde
a continuacion la clase "Principal"
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",50,50)
self.tamaño = (1000,650)
self.ventanaPrincipal = pygame.display.set_mode(self.tamaño,pygame.RESIZABLE)
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.personaje.draw(),(self.personaje.getPosicionX(),self.personaje.getPosicionX()))
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: nada
Argumentos: no tiene
'''
pygame.display.update()
#Un bucle para mantener la ventana y tomar los eventos
while True:
#Aqui checamos todos los eventos que ocurrieron
for e in pygame.event.get():
pygame.display.update()
#Si el tipo del evento es QUIT (o salir) entonces termina el ciclo
if e.type == pygame.QUIT:
pygame.display.quit()
break
#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.moverArriba()
pygame.display.update()
break
if e.key == pygame.K_UP:
self.personaje.moverAbajo()
pygame.display.update()
break
if e.key == pygame.K_RIGHT:
self.personaje.moverDerecha()
pygame.display.update()
break
if e.key == pygame.K_LEFT:
self.personaje.moverIzquierda()
pygame.display.update()
break
if e.key == pygame.K_ESCAPE:
pygame.display.quit()
#Inicia el objeto principal
principal = Principal()
principal.draw()
principal.capturarEventos()
y la clase "Personaje"
Código:
import pygame
class Personaje:
def __init__(self,nombre,clase,raza,posicionX,posicionY):
self.nombre = nombre
self.clase = clase
self.raza = raza
self.posicionX = posicionX
self.posicionY = posicionY
self.cuerpo = pygame.image.load("personaje.png")
def draw(self):
'''
Devuelve el cuerpo del personaje
'''
return self.cuerpo
def getPosicionX(self):
'''
Retorna la posicion en X
'''
return self.posicionX
def getPosicionY(self):
'''
Retorna la posicion en Y
'''
return self.posicionY
def moverArriba(self):
'''
Aumenta la posicion en X
'''
self.posicionX += 10
def moverAbajo(self):
'''
Disminuye la posicion en X
'''
self.posicionX -= 10
def moverDerecha(self):
'''
Aumenta la posicion en Y
'''
self.posicionY += 10
def moverIzquierda(self):
'''
Disminuye la posicion en Y
'''
self.posicionY -= 10
|