# Modulos
import pygame
from pygame.locals import*
import sys
# Constantes
WIDTH = 640
HEIGHT = 480
# Clases
# ---------------------------------------------------------------------
class Bala:
def __init__(self, xBala, yBala):
self.xBala = xBala
self.yBala = yBala
def disparar(self):
self.yBala -= 1
return self.yBala
# ---------------------------------------------------------------------
# Funciones
# ---------------------------------------------------------------------
def cargarImagen(nombreArchivo, transparente=False):
try: imagen = pygame.image.load(nombreArchivo)
except pygame.error, message:
raise SystemExit, message
imagen = imagen.convert()
if transparente:
color = imagen.get_at((0,0))
imagen.set_colorkey(color, RLEACCEL)
return imagen
# ---------------------------------------------------------------------
def main():
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Aviones")
miBala = Bala(0, 0)
imagenFondo = cargarImagen('imagenes/fondo.jpg')
naveSprite = cargarImagen('imagenes/nave.bmp', True)
naveRect = naveSprite.get_rect()
yNave = 400
xNave = 320
balaSprite = cargarImagen('imagenes/bala.bmp', True)
while True:
for eventos in pygame.event.get():
if eventos.type == QUIT:
sys.exit()
teclaPres = pygame.key.get_pressed()
if teclaPres[K_UP]:
yNave -= 1
if teclaPres[K_DOWN]:
yNave += 1
if teclaPres[K_LEFT]:
xNave -= 1
if teclaPres[K_RIGHT]:
xNave += 1
if teclaPres[K_SPACE]:
miBala.xBala = xNave+70
miBala.yBala = yNave+70
while miBala.yBala > 0:
screen.blit(balaSprite, (miBala.xBala, miBala.disparar()))
screen.blit(imagenFondo, (0, 0))
screen.blit(naveSprite, (xNave, yNave))
pygame.display.flip()
return 0
if __name__ == '__main__':
pygame.init()
main()
El problema que tengo está en esta parte:
if teclaPres[K_SPACE]:
miBala.xBala = xNave+70
miBala.yBala = yNave+70
while miBala.yBala > 0:
screen.blit(balaSprite, (miBala.xBala, miBala.disparar()))
He probado distintas formas de implementarlo, de hecho tengo varias versiones del mismo código, pero no consigo hacer que funcione. Si alguien pudiese darme una mano estaría muy agradecido. Saludos.