| 
	
		|  Autor | Tema: Corregir Código Juego - Ayuda  (Leído 4,216 veces) |  
	| 
			| 
					
						| NuBii 
								
								 Desconectado 
								Mensajes: 15
								
								   | 
 
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. import pygamefrom 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.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Anibal784 
								 
								
								 Desconectado 
								Mensajes: 762
								 
								Yo no la vote, pero me la tengo que aguantar igual
								
								
								
								
								
								     | 
 
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. 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):       #Mover el sprite en 20        self.pos_x -= 20        self.pos_y += 20        if self.pos_x < -20:            self.pos_x = 640        if pos_y > 510:            self.pos_y = 0         self.rect.move_ip(self.pos_x, self.pos_y) 
 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).
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El que llega sin que lo llamen, se va sin que lo echen. Vos no la votaste por eso la tenes adentro.
 Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta. |  |  |  | 
			| 
					
						| NuBii 
								
								 Desconectado 
								Mensajes: 15
								
								   | 
 
A ver, muchas gracias por la respuesta tan rapida   . 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: import pygamefrom 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
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Ayuda, corregir un codigo :S .NET (C#, VB.NET, ASP)
 | Edu | 4 | 3,813 |  20 Marzo 2011, 15:18 pm por Edu
 |  
						|   |   | ¿Me ayudarían a corregir este código? Programación C/C++
 | AnungUnRama | 6 | 4,364 |  9 Mayo 2013, 16:30 pm por leosansan
 |  
						|   |   | Corregir código de C++ Programación C/C++
 | Jose_00 | 1 | 2,771 |  8 Abril 2015, 03:17 am por tremolero
 |  
						|   |   | Ayuda con este código del juego Sodoku Java
 | Curi0s0 | 3 | 3,297 |  14 Junio 2018, 22:19 pm por Serapis
 |  
						|   |   | Ayuda con codigo de juego TAREA
							« 1 2 » Programación C/C++
 | Jay | 12 | 7,412 |  4 Octubre 2018, 15:57 pm por OmarHack
 |    |