2013-06-24 160 views
1

我是pygame的新手,尝试开发一个8位射手。我想要的是,当用户按下空间时,一颗子弹就会发射并直至撞到暴徒或窗户的边缘。这里是子弹类:将一个精灵移动到pygame中的另一个精灵

class BULLET: 
    def __init__(self, location): 
     self.pos = [0,0] 
     self.image = NOBULLET 
     self.rect = self.image.get_rect() 
     self.direction = 0 
    def move(self): 
     if self.rect.right >= screen.get_rect().right: 
      self.rect.right = self.rect.right - 10 
     if self.rect.left <= screen.get_rect().left: 
      self.rect.right = self.rect.right + 10 
     if self.rect.top <= screen.get_rect().top: 
      self.rect.top = self.rect.top + 10 
     if self.rect.bottom >= screen.get_rect().bottom: 
       self.rect.bottom = self.rect.bottom - 10 
    def update(self): 
     while True: 
      for event in pygame.event.get(): 
       if event.type == KEYDOWN: 
        if (event.key == K_SPACE and Gun.image == NOGUN): 
         self.pos == Player.pos() 
         self.direction == Player.direction 

我要的是子弹去当按下空间的播放器,并在玩家面对的方向移动,直到它击中暴徒或窗口的边缘。

[编辑] 这是主要的拍摄循环:

if AMMO > 0: 
    if event.type == pygame.KEYDOWN and Gun.image == NOGUN: 
     if event.key == pygame.K_SPACE and Gun.image == NOGUN: 
      Bullet.direction = Player.direction 
      Bullet.pos == Player.pos 
      shot.play() 
      print "BANG" 
      AMMO = AMMO - 1 
      time.sleep(0.09) 
      Bullet.image == NOBULLET 

回答

0

放的位置和方向的参数在__init__我看到你已经有一个位置。现在,你需要将这些从构造函数存储类

,你必须self.pos = [0,0]你需要自行设置=以传递作为参数

位置做方向上的同样的事情用self.direction = orientation

[编辑] 在这里,我将进入你更详细的,这是你的init方法:

def __init__(self, location): 
    self.pos = [0,0] 
    self.image = NOBULLET 
    self.rect = self.image.get_rect() 
    self.direction = 0 

你需要一个参数添加到它,现在它有两个,上e是自我,一个是位置,你也需要方向,它最终应该看起来像这样def __init__(self, location, orientation): 现在当你创建子弹时,你必须将它传递给玩家的位置(x,y)和他所面对的方向(可能为0,1,2,3 N,E,S,W)

然后,你需要做self.variable = argument两个位置和方向

+0

如何设置参数 – user2493744

+0

@ user2493744我来存储这些参数只是为你增加了一些信息 – Stephan

+0

当我做你说的话,位置仍然是0,0,我没有键入那些cordinantes – user2493744

相关问题