2014-01-11 1 views
-2
import pygame, random 
pygame.init() 

screen = pygame.display.set_mode((640, 480)) 

class Ship(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.screen = screen 
     self.image = pygame.image.load("ship.jpg") 
     self.image = self.image.convert() 
     self.rect = self.image.get_rect() 
     self.rect.center = (320, 400) 
     self.dx = 0 
     self.dy = 0 
     self.x = self.rect.centerx 
     self.y = self.rect.centery  

    def update(self): 
     self.checkBounds() 

    def checkBounds(self): 
     screen = self.screen 
     if self.x > screen.get_width(): 
      self.x = screen.get_width() 
     if self.x < 0: 
      self.x = 0 


class Missile(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load("missile.jpg") 
     self.image = self.image.convert() 
     self.rect = self.image.get_rect() 
     self.reset() 

    def update(self): 
     self.rect.centery += self.dy 
     if self.rect.top > screen.get_height(): 
      self.reset() 

    def reset(self): 
     self.rect.bottom = 0 
     self.rect.centerx = random.randrange(0, screen.get_width()) 
     self.dy = random.randrange(5, 10) 


def main(): 
    background = pygame.Surface(screen.get_size()) 

    background.fill((0, 0, 0)) 
    screen.blit(background, (0, 0)) 
    ship = Ship() 
    missile = Missile() 

    allSprites = pygame.sprite.Group(missile, ship) 
    clock = pygame.time.Clock() 
    keepGoing = True 
    while keepGoing: 
     clock.tick(30) 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       keepGoing = False 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_LEFT: 
        ship.rect.centerx = ship.rect.centerx-10 
       elif event.key == pygame.K_RIGHT: 
        ship.rect.centerx = ship.rect.centerx + 10 
       elif event.type == pygame.KEYUP: 
        ship.rect.centerx = ship.rect.centerx + 0 
       elif event.key == pygame.K_DOWN: 
        ship.rect.centerx = ship.rect.centerx - 0 
     if pygame.sprite.collide_rect(ship,missile) == True: 
      self.image = pygame.image.load("explosion.jpg") 

     allSprites.clear(screen, background) 
     allSprites.update() 
     allSprites.draw(screen) 

     pygame.display.flip() 
    pygame.quit() 


if __name__ == "__main__": 
    main() 
+3

다른 세부 정보가 있습니까? 너는 우리에게 코드를주고 무엇을? 우리는 어디서 오류를 발견해야합니까? 오류의 원인이되는 부분 만 제공하십시오. – Hauleth

+4

** ** 어디에서 ** 오류가 나타 납니까? – Nabla

답변

3
self.image = pygame.image.load("explosion.jpg") 

를 해결하지 못할 정의되어 있지 않습니다. 여기에는 self이 없습니다. 나는 당신이

ship.image = pygame.image.load("explosion.jpg") 

또는 이와 비슷한 것을 의미한다고 생각합니다. 함께있을 수도 있습니다

missile.image = pygame.image.load("explosion.jpg") 
+0

정말로 도움이 된 고맙습니다 nabla :) – user2045015

관련 문제