elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Corregir Código Juego - Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Corregir Código Juego - Ayuda  (Leído 3,924 veces)
NuBii

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Corregir Código Juego - Ayuda
« 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.


En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Corregir Código Juego - Ayuda
« Respuesta #1 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
  1. class Pene(Sprite):
  2.    def __init__(self):
  3.        self.image = pygame.image.load("/home/manuel/Escritorio/pene.png").convert_alpha()
  4.        self.rect = self.image.get_rect()
  5.        self.pos_x = 400
  6.        self.pos_y = 400
  7.        self.rect.move_ip(self.pos_x, self.pos_y)
  8.  
  9.    def movimiento(self):
  10.       #Mover el sprite en 20
  11.        self.pos_x -= 20
  12.        self.pos_y += 20
  13.        if self.pos_x < -20:
  14.            self.pos_x = 640
  15.        if pos_y > 510:
  16.            self.pos_y = 0
  17.  
  18.        self.rect.move_ip(self.pos_x, self.pos_y)
  19.  
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.

Citar
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 Desconectado

Mensajes: 15



Ver Perfil
Re: Corregir Código Juego - Ayuda
« Respuesta #2 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda, corregir un codigo :S
.NET (C#, VB.NET, ASP)
Edu 4 3,487 Último mensaje 20 Marzo 2011, 15:18 pm
por Edu
¿Me ayudarían a corregir este código?
Programación C/C++
AnungUnRama 6 3,658 Último mensaje 9 Mayo 2013, 16:30 pm
por leosansan
Corregir código de C++
Programación C/C++
Jose_00 1 2,274 Último mensaje 8 Abril 2015, 03:17 am
por tremolero
Ayuda con este código del juego Sodoku
Java
Curi0s0 3 2,796 Último mensaje 14 Junio 2018, 22:19 pm
por Serapis
Ayuda con codigo de juego TAREA « 1 2 »
Programación C/C++
Jay 12 6,304 Último mensaje 4 Octubre 2018, 15:57 pm
por OmarHack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines