0

我是 pygame 的新手,正在制作一个僵尸跑步游戏。我正在用箭头键控制人类,我希望在第一次创建僵尸时让僵尸跑向玩家的位置。我不确定如何确定玩家位置以将僵尸设置在正确的方向。僵尸不必跟随人类,只需在僵尸创建时朝着玩家位置的方向前进。

class Human(pygame.sprite.Sprite):
 def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image=pygame.image.load("human.jpg")
    self.image=self.image.convert()
    self.rect=self.image.get_rect()
    self.x=100
    self.y=430
    self.dx=50
    self.dy=0
 def update(self):
    keys=pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        self.x-=self.dx
    if keys[pygame.K_RIGHT]:
        self.x+=self.dx
    self.rect.center=(self.x,self.y)
class ZombieChase(pygame.sprite.Sprite):
 def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image=pygame.image.load("zombie.jpg")
    self.image=self.image.convert()
    self.rect=self.image.get_rect()
    self.reset()
    self.dx=15
    self.dy=15
    #self.xStart=random.randrange(0,screen.get_width())

 def update(self):
    self.rect.centery+=self.dy

    self.rect.centerx+=self.dx

    if self.rect.top>screen.get_height():
        self.reset()
    if self.rect.right>screen.get_width():
        self.reset()
    if self.rect.left<0:
        self.reset()


 def reset(self):
    self.rect.top=0
    speed=random.randrange(20,36)
    xStart=random.randrange(0,screen.get_width())
    yStart=0
    #humanx, humany  !!!!!!this is where i don't know what to put!!!!!
    try:
        self.dx=(humanx-xStart)/speed
    except ZeroDivisionError:
        self.dx=0
    try:
        self.dy=(humany-yStart)/speed
    except ZeroDivisionError:
        self.dy=1

    self.rect.centerx=xStart

抱歉,如果标签不正确。

4

1 回答 1

3

如果您pygame.sprite.Sprite对位置进行子类化,则为zombie.rect. 对于坐标,zombie.rect.centerzombie.rect.topleft

于 2013-04-13T21:44:50.007 回答