将精灵移动到pygame中的另一个精灵

时间:2013-06-24 15:33:17

标签: python pygame sprite

我是pygame的新手,并试图开发一个8位射手。我想要的是当用户按下空间时,子弹将会发射,直到它撞到一个暴徒或窗户的边缘。这是子弹类:

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 

1 个答案:

答案 0 :(得分: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

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

然后,您需要通过self.variable = argument对位置和方向

来存储这些参数