当玩家图像向左滚动时,敌人暴民会滚动吗?

时间:2020-05-26 22:24:19

标签: python pygame

我的敌人有一个问题,当我的玩家向左滚动时,即使玩家Video仍在此位置以修复该敌人的滚动,我的完整代码仍在其下方以至于无法容纳

我想做的是让我的敌人在我的窗口滚动时保持其位置不变,因为左右滚动一直跟随玩家


while runninggame:
    clock.tick(FPS)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            runninggame = False
  [...]
# I did the same for my players key movement  this part suppose to not make my player scroll
if playerman.y < 250:
        playerman.y += 1
        for platform in platforms:
            platform.y += playerman.speed
        for enemys in enemying:
            enemys.y += playerman.speed

我的敌人阶级

class enemy:
    def __init__(self,x,y,height,width,end):
        self.x = x
        self.y =y
        self.esright = [pygame.image.load("esright1.png"),
        pygame.image.load("esright1.png"),
        pygame.image.load("esright2.png"),
        pygame.image.load("esright3.png"),
        pygame.image.load("esright4.png"),
        pygame.image.load("esright5.png"),
        pygame.image.load("esright6.png"),
        pygame.image.load("esright7.png"),
        pygame.image.load("esright8.png"),
        pygame.image.load("esright9.png"),
        pygame.image.load("esright10.png"),
        pygame.image.load("esright11.png"),
        pygame.image.load("esright12.png"),
        pygame.image.load("esright13.png"),
        pygame.image.load("esright14.png"),
        pygame.image.load("esright15.png"),
        pygame.image.load("esright16.png"),
        pygame.image.load("esright17.png"),
                          ]
        self.esleft = [pygame.image.load("esleft1.png"),
        pygame.image.load("esleft1.png"),
        pygame.image.load("esleft2.png"),
        pygame.image.load("esleft3.png"),
        pygame.image.load("esleft4.png"),
        pygame.image.load("esleft5.png"),
        pygame.image.load("esleft6.png"),
        pygame.image.load("esleft7.png"),
        pygame.image.load("esleft8.png"),
        pygame.image.load("esleft9.png"),
        pygame.image.load("esleft10.png"),
        pygame.image.load("esleft11.png"),
        pygame.image.load("esleft12.png"),
        pygame.image.load("esleft13.png"),
        pygame.image.load("esleft14.png"),
        pygame.image.load("esleft15.png"),
        pygame.image.load("esleft16.png"),
        pygame.image.load("esleft17.png"),
                          ]
        self.esright = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esright]
        self.esleft = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esleft]
        self.height = height
        self.width = width
        self.anim_index = 0
        self.distance = 80
        self.speed = 8
        self.vel = 3
        self.path = [x,end]
        self.walking_index = 0
        self.rect = pygame.Rect(x,y,height,width)
       def draw(self,window):
       self.move()
       if self.Walking_index + 1 >= 33:
           self.Walking_index = 0
       if self.vel > 0:
           window.blit(self.esright[self.Walking_index//3], (self.x,self.y))
           self.Walking_index += 1
       else:
           window.blit(self.esleft[self.Walking_index//3], (self.x,self.y))
           self.Walking_index += 1
       def move(self):
       if self.vel > 0:
           if self.x + self.vel < self.path[1]:
               self.x += self.vel
           else:
               self.vel = self.vel * -1
               self.Walking_index = 0
       else:
           if self.x - self.vel >  self.path[0]:
               self.x += self.vel
           else:
               self.vel = self.vel * -1
               self.Walking_index = 0


我在哪里定义了敌人的阶级

black = (0,0,0)
enemys1 = enemy(550,436,50,50,300)
enemys = [enemys1]

我的完整代码已经很适合script

1 个答案:

答案 0 :(得分:2)

滚动敌人的位置是不够的。敌人的路径受到间隔(self.path的限制。当敌人的x坐标到达self.path[0]self.path[1]时,敌人转身:

if self.vel > 0:
   if self.x + self.vel < self.path[1]:
       self.x += self.vel
   else:
       self.vel = self.vel * -1
       self.Walking_index = 0
else:
   if self.x - self.vel >  self.path[0]:
       self.x += self.vel
   else:
       self.vel = self.vel * -1
       self.Walking_index = 0

如果您滚动敌人,那么您也必须滚动路径。

将方法scroll添加到类enemys中。更改位置以及路径的起点和终点:

class enemys:
    # [...]

    def scroll(self, sx, sy):
        self.x += sx
        self.y += sy
        self.path[0] += sx
        self.path[1] += sx

使用该方法滚动敌人:

runninggame = True
while runninggame:
    # [...]

    if playerman.y < 250:
        playerman.y += 1

        # [...]
        for enemys in enemying:
            enemys.scroll(0, playerman.speed)

    if playerman.y > 450:
        playerman.y -= playerman.fall

        # [...]
        for enemys in enemying:
            enemys.scroll(0, -playerman.fall)

    keys = pygame.key.get_pressed()
    if keys[pygame.K_a]:
        playerman.x -= playerman.speed
        playerman.direction = "left"
        # camera controll for left
        if playerman.x < 100:

            # [...]
            for enemys in enemying:
                enemys.scroll(playerman.speed, 0)

    elif keys[pygame.K_d]:
        playerman.x += playerman.speed
        playerman.direction = "right"     
        # camera for right:
        if playerman.x > 400:
            playerman.x -= playerman.speed

            # [...]
            for enemys in enemying:
                enemys.scroll(-playerman.speed, 0)
相关问题