Tu código ni siquiera corría. Tienes varias fallas e incluso por ejemplo en los metodos de mover izquierda, derecha, arriba, abajo te mueves en los ejes incorrectos y aveces haces incrementos o decrementos en dirección incorrecta.
self.tamaño no debería de correr. Te debería dar syntax error.
En la clase personaje no deberías tener el nombre de la imagen hardcodeado.
Puedes diseñar tus métodos moverArriba, moverAbajo, moverDerecha, moverIzquierda por un método mover genérico, que reciba 2 parámetros un desplazamiento en X y otro en Y.
Donde tienes en el método draw de la clase main tienes 2 veces self.personaje.getPosicionX(). Mientras que el método draw de la clase personaje no es descriptivo.
En fin podría seguir con la lista, pero no terminaría. Te recomiendo entrar a
loserjuegos tienen bastantes ejemplos y explican bien los conceptos básicos.
Código Python:
Ver original#coding: utf-8
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.tamano = (1000,650)
self.ventanaPrincipal = pygame.display.set_mode(self.tamano,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.getPosicionY()))
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():
#Si el tipo del evento es QUIT (o salir) entonces termina el ciclo
if e.type == pygame.QUIT:
return
#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.moverAbajo()
break
if e.key == pygame.K_UP:
self.personaje.moverArriba()
break
if e.key == pygame.K_RIGHT:
self.personaje.moverDerecha()
break
if e.key == pygame.K_LEFT:
self.personaje.moverIzquierda()
break
if e.key == pygame.K_ESCAPE:
pygame.display.quit()
self.draw()
pygame.display.update()
#Inicia el objeto principal
principal = Principal()
principal.capturarEventos()
Código Python:
Ver original#coding: utf-8
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 Y
'''
self.posicionY -= 10
def moverAbajo(self):
'''
Disminuye la posicion en Y
'''
self.posicionY += 10
def moverDerecha(self):
'''
Aumenta la posicion en X
'''
self.posicionX += 10
def moverIzquierda(self):
'''
Disminuye la posicion en X
'''
self.posicionX -= 10