Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/03/2012, 19:49
Avatar de razpeitia
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 pygame

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
  1. #coding: utf-8
  2. import pygame
  3. import Personaje
  4.  
  5. class Principal:
  6.  
  7.  
  8.     def __init__(self):
  9.         pygame.display.init()
  10.         #pygame.display.set_icon(pygame.image.load("favicon.png"))
  11.         self.personaje = Personaje.Personaje("wowo","Mago","Elfo",50,50)
  12.         self.tamano = (1000,650)
  13.         self.ventanaPrincipal = pygame.display.set_mode(self.tamano,pygame.RESIZABLE)
  14.  
  15.     def draw(self):
  16.         '''
  17.        Descripcion: Crea la ventana,Setea el titulo de la ventana,Agrega al personaje
  18.        Retorna: nada
  19.        Argumentos: no tiene
  20.        '''
  21.         self.ventanaPrincipal.fill((255,255,255))
  22.         pygame.display.set_caption("Fatum Online")
  23.         self.ventanaPrincipal.blit(self.personaje.draw(),(self.personaje.getPosicionX(),self.personaje.getPosicionY()))
  24.         pygame.display.flip()
  25.  
  26.     def capturarEventos(self):
  27.         '''
  28.        Descripcion: Crea un bucle que se encarga de tomar los eventos y toma desiciones en torno a ellos
  29.        Retorna: nada
  30.        Argumentos: no tiene
  31.        '''
  32.         pygame.display.update()
  33.         #Un bucle para mantener la ventana y tomar los eventos
  34.         while True:
  35.             #Aqui checamos todos los eventos que ocurrieron
  36.             for e in pygame.event.get():
  37.                 #Si el tipo del evento es QUIT (o salir) entonces termina el ciclo
  38.                 if e.type == pygame.QUIT:
  39.                     return
  40.                 #Si existen tomo los eventos del teclado
  41.                 if e.type == pygame.KEYDOWN:
  42.                     #Cuando se pulse en las felchas de teclado seteamos la posicion del personaje y su visualizacion en pantalla
  43.                     if e.key == pygame.K_DOWN:
  44.                         self.personaje.moverAbajo()
  45.                         break
  46.                     if e.key == pygame.K_UP:
  47.                         self.personaje.moverArriba()
  48.                         break
  49.                     if e.key == pygame.K_RIGHT:
  50.                         self.personaje.moverDerecha()
  51.                         break
  52.                     if e.key == pygame.K_LEFT:
  53.                         self.personaje.moverIzquierda()
  54.                         break
  55.                     if e.key == pygame.K_ESCAPE:
  56.                         pygame.display.quit()
  57.             self.draw()
  58.             pygame.display.update()
  59.            
  60.  
  61. #Inicia el objeto principal
  62. principal = Principal()
  63. principal.capturarEventos()

Código Python:
Ver original
  1. #coding: utf-8
  2. import pygame
  3.  
  4. class Personaje:
  5.  
  6.     def __init__(self,nombre,clase,raza,posicionX,posicionY):
  7.         self.nombre = nombre
  8.         self.clase = clase
  9.         self.raza = raza
  10.         self.posicionX = posicionX
  11.         self.posicionY = posicionY
  12.         self.cuerpo = pygame.image.load("personaje.png")
  13.  
  14.     def draw(self):
  15.         '''
  16.        Devuelve el cuerpo del personaje
  17.        '''
  18.         return self.cuerpo
  19.  
  20.     def getPosicionX(self):
  21.         '''
  22.        Retorna la posicion en X
  23.        '''
  24.         return self.posicionX
  25.  
  26.     def getPosicionY(self):
  27.         '''
  28.        Retorna la posicion en Y
  29.        '''
  30.         return self.posicionY
  31.  
  32.     def moverArriba(self):
  33.         '''
  34.        Aumenta la posicion en Y
  35.        '''
  36.         self.posicionY -= 10
  37.  
  38.     def moverAbajo(self):
  39.         '''
  40.        Disminuye la posicion en Y
  41.        '''
  42.         self.posicionY += 10
  43.  
  44.     def moverDerecha(self):
  45.         '''
  46.        Aumenta la posicion en X
  47.        '''
  48.         self.posicionX += 10
  49.  
  50.     def moverIzquierda(self):
  51.         '''
  52.        Disminuye la posicion en X
  53.        '''
  54.         self.posicionX -= 10