Les paso el código a ver si ven el error (tiene que estar en la funcion main(), lo digo para ahorraros trabajo).
- Código: Seleccionar todo
- #!/usr/bin/python
 # -*- coding: iso-8859-1 -*-
 # ----------------------------------------------------------------------
 # Nombre: Aterriza la nave
 # Autor: Rafael Álvarez García (rafahack95@gmail.com)
 # Descripción: Juego en el que hay que aterrizar una nave en una
 # plataforma esquivando los meteoritos y con un combustible determinado.
 # ----------------------------------------------------------------------
 import pygame
 from pygame.locals import *
 import os
 import random
 SCREEN_WIDTH = 640
 SCREEN_HEIGHT = 480
 DATOS_IMA = 'ima'
 def load_image(name, colorkey = False):
 """ Carga una imagen, devuelve una superficie y su rectángulo"""
 
 fullname = os.path.join(DATOS_IMA, name)
 
 try: image = pygame.image.load(fullname)
 except pygame.error, message:
 print 'No se ha podido cargar la imagen', fullname
 raise SystemExit, message
 
 image = image.convert()
 if colorkey:
 colorkey = image.get_at((0,0))
 image.set_colorkey(colorkey, RLEACCEL)
 return image, image.get_rect()
 
 class Nave(pygame.sprite.Sprite):
 """ Este objeto representa la nave que controla el jugador"""
 
 def __init__(self):
 pygame.sprite.Sprite.__init__(self)
 self.image, self.rect = load_image('nave.gif')
 self.rect.centerx = SCREEN_WIDTH / 2
 self.rect.centery = SCREEN_HEIGHT - 400
 self.speed = [0,0]
 
 def gravedad(self, gravedad):
 self.speed[1] = self.speed[1] + gravedad
 
 def mueve_nave(self):
 tecla = pygame.key.get_pressed()
 
 if tecla[K_UP]:
 self.speed[1] = self.speed[1] - 0.3
 
 if tecla[K_LEFT]:
 self.speed[0] = self.speed[0] - 0.3
 
 if tecla[K_RIGHT]:
 self.speed[0] = self.speed[0] + 0.3
 
 def update(self):
 # En este método, se llaman a todos los demás, para que en el
 # cuerpo del programa solo sea necesario llamar a update
 self.mueve_nave()
 self.gravedad(0.1)
 if self.rect.top <1>= SCREEN_HEIGHT:
 self.rect.bottom = SCREEN_HEIGHT
 self.speed[1] = 0
 if self.rect.left <1>= SCREEN_WIDTH + self.rect.width + 1:
 self.rect.left = -self.rect.width
 self.rect.move_ip((self.speed[0], self.speed[1]))
 
 class Meteorito(pygame.sprite.Sprite):
 """ Este objeto, representa los meteoritos que el objeto Nave tendrá
 que esquivar"""
 
 def __init__(self, rock):
 pygame.sprite.Sprite.__init__(self)
 self.image_base, self.rect_base = load_image(rock)
 self.rect_base.centerx = random.randrange(0, SCREEN_WIDTH)
 self.rect_base.centery = random.randrange(0, SCREEN_HEIGHT)
 self.speed = [random.randrange(-3, 3), random.randrange(-3, 3)]
 self.image, self.rect = self.image_base, self.rect_base
 self.angle = 0
 self.angle_constante = random.randrange(-4, 4)
 
 def rotar_meteorito(self):
 self.angle = self.angle - self.angle_constante
 self.image = pygame.transform.rotate(self.image_base, self.angle)
 self.rect = self.image.get_rect()
 self.rect.centerx = self.rect_base.centerx
 self.rect.centery = self.rect_base.centery
 
 def update(self):
 # En este método, se llaman a todos los demás, para que en el
 # cuerpo del programa solo sea necesario llamar a update
 self.rotar_meteorito()
 if self.rect_base.top <1>= SCREEN_HEIGHT + self.rect_base.height + 1:
 self.rect_base.top = -self.rect_base.height
 if self.rect_base.left <1>= SCREEN_WIDTH + self.rect_base.width + 1:
 self.rect_base.left = -self.rect_base.width
 self.rect_base.move_ip((self.speed[0], self.speed[1]))
 
 class Boom(pygame.sprite.Sprite):
 """Representa una explosion de alguna nave."""
 def __init__(self, x, y):
 pygame.sprite.Sprite.__init__(self)
 self.load_images()
 self.step = 0
 self.delay = 2
 (self.image, self.rect) = load_image('boom/1.png', True)
 self.rect.center = (x, y)
 def load_images(self):
 """Carga la lista 'self.frames' con todos los cuadros de animacion"""
 self.frames = []
 for n in range(1, 8):
 path = 'boom/%d.png'
 new_image = load_image(path % n, True)[0]
 self.frames.append(new_image)
 def update(self):
 self.image = self.frames[self.step]
 if self.delay <0> 6:
 self.kill()
 else:
 self.delay -= 1
 
 # ----------------------------------------------------------------------
 
 def main():
 pygame.init()
 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
 pygame.display.set_caption('Aterriza la nave')
 icon = load_image('icon.gif') [0]
 pygame.display.set_icon(icon)
 
 background, background_rect = load_image('background.jpg')
 screen.blit(background, (0,0))
 
 nave = Nave()
 meteorito1 = Meteorito('big_rock1.gif')
 meteorito2 = Meteorito('medium_rock1.gif')
 todos_sprites = pygame.sprite.RenderClear((nave, meteorito1, meteorito2))
 meteoritos = pygame.sprite.Group(meteorito1, meteorito2)
 clock = pygame.time.Clock()
 
 while True:
 clock.tick(60)
 
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 raise SystemExit
 elif event.type == pygame.KEYDOWN:
 if event.key == K_ESCAPE:
 raise SystemExit
 
 # Gestionamos la explosión de la nave
 if pygame.sprite.spritecollide(nave, meteoritos, 1):
 (x, y) = nave.rect.center
 todos_sprites.add(Boom(x, y))
 nave.kill()
 
 todos_sprites.update()
 todos_sprites.clear(screen, background)
 todos_sprites.draw(screen)
 pygame.display.flip()
 
 if __name__ == '__main__': main()
Saludos y gracias!!!





 Me tira un error:
 Me tira un error:
