Título: Corregir Código Juego - Ayuda Publicado por: NuBii en 13 Mayo 2009, 19:18 pm Hola guys. Hace poco que he empezado con python y estoy "intentando" hacer algunos juegos simples con pygame para ir cogiendo práctica y experiencia.
Estoy intentando crear un juego muy simple que consiste en que van caiendo penes por la parte de arriba de la ventana y tu controlas la cara y consiste en esquivarlos. De momento, llevo de código lo basico, que es la clase "cara", la clase "pene" y los he intentado poner en funcionamiento, pero se me queda la pantalla en negro y se bloquea la ventana. Pongo el código a ver si alguien sabe donde me he podido equivocar... ya que no me salta ningun error en la consola. Código: import pygame from pygame.locals import * from pygame.sprite import Sprite class Cara(Sprite): def __init__(self): self.image = pygame.image.load("/home/manuel/Escritorio/laurzar.png").convert_alpha() self.rect = self.image.get_rect() self.rect.move_ip(200,300) def upload(self): teclas = pygame.key.get_pressed() if teclas[K_LEFT]: self.rect.x -= 13 elif teclas[K_RIGHT]: self.rect.x += 13 if teclas[K_UP]: self.rect.y -= 13 elif teclas[K_DOWN]: self.rect.y += 13 class Pene(Sprite): def __init__(self): self.image = pygame.image.load("/home/manuel/Escritorio/pene.png").convert_alpha() self.rect = self.image.get_rect() self.rect.move_ip(400,400) def movimiento(self): pos_x = 400 pos_y = 400 while not salir: pos_x -= 20 pos_y += 20 if pos_x < -20: pos_x = 640 if pos_y > 510: pos_y = 0 if __name__ == '__main__': salir = False screen = pygame.display.set_mode((640,480)) pygame.display.set_caption("Lluvia rosada..") fondo = pygame.image.load("/home/manuel/Escritorio/fondo.jpg").convert() temporizador = pygame.time.Clock() cara = Cara() pene = Pene() while not salir: cara.update() pene.movimiento() #act.grafica screen.blit(fondo, (0,0)) screen.blit(pene.image, pene.rect) screen.blit(cara.image, cara.rect) pygame.display.flip() temporizador.tick(60) if cara.rect.x > 640: cara.rect.x = -50 elif cara.rect.x < -50: cara.rect.x = 640 elif cara.rect.y < -50: cara.rect.y = 510 elif cara.rect.y > 510: cara.rect.y = -50 for evento in pygame.event.get(): if evento.type == pygame.QUIT: salir = True Gracias de antemano. Título: Re: Corregir Código Juego - Ayuda Publicado por: Anibal784 en 13 Mayo 2009, 19:29 pm Estás mezclando, en la clase Pene no debes tener un while, pues sólo debes manipular el movimiento del mismo por cada iteración, es por eso que se cuelga tu programa. Lo que debes hacer es mover el sprite una cierta cantidad de pixeles.
Código Mao meno así sería, además estás comprobando los límites de Cara en la función main y controlando la pulsación de teclas en la clase Cara (que a mi parecer debería ser al revés). Título: Re: Corregir Código Juego - Ayuda Publicado por: NuBii en 13 Mayo 2009, 20:04 pm A ver, muchas gracias por la respuesta tan rapida :o. Te explico, he aplicado los cambios, y la ya sale el fondo y la cara y eso, y se mueve y cuando alcanza los limites sale por el otro lado y todo eso, pero el pene no sale :___ con lo precioso que es...
Te dejo el codigo actual: Código: import pygame from pygame.locals import * from pygame.sprite import Sprite class Cara(Sprite): def __init__(self): self.image = pygame.image.load("/home/manuel/Escritorio/laurzar.png").convert_alpha() self.rect = self.image.get_rect() self.rect.move_ip(200,300) class Pene(Sprite): def __init__(self): self.image = pygame.image.load("/home/manuel/Escritorio/pene.png").convert_alpha() self.rect = self.image.get_rect() self.pos_x = 400 self.pos_y = 400 self.rect.move_ip(self.pos_x, self.pos_y) def movimiento(self): self.pos_x -= 20 self.pos_y += 20 if self.pos_x < -20: self.pos_x = 640 if self.pos_y > 510: self.pos_y = 0 self.rect.move_ip(self.pos_x, self.pos_y) if __name__ == '__main__': salir = False screen = pygame.display.set_mode((640,480)) pygame.display.set_caption("Lluvia rosada..") fondo = pygame.image.load("/home/manuel/Escritorio/fondo.jpg").convert() temporizador = pygame.time.Clock() cara = Cara() pene = Pene() while not salir: cara.update() pene.movimiento() #act.grafica screen.blit(fondo, (0,0)) screen.blit(pene.image, pene.rect) screen.blit(cara.image, cara.rect) pygame.display.flip() temporizador.tick(60) teclas = pygame.key.get_pressed() if teclas[K_LEFT]: cara.rect.x -= 13 elif teclas[K_RIGHT]: cara.rect.x += 13 if teclas[K_UP]: cara.rect.y -= 13 elif teclas[K_DOWN]: cara.rect.y += 13 if cara.rect.x > 640: cara.rect.x = -50 elif cara.rect.x < -50: cara.rect.x = 640 elif cara.rect.y < -50: cara.rect.y = 510 elif cara.rect.y > 510: cara.rect.y = -50 for evento in pygame.event.get(): if evento.type == pygame.QUIT: salir = True |