Когда изображение игрока прокручивается влево, вражеская толпа прокручивается? - PullRequest
1 голос
/ 27 мая 2020
• 1000 *

то, что я пытался сделать, это заставить моего врага не менять свою позицию, когда мое окно прокручивается, он делает то же самое для вправо и влево, продолжает следовать за игроком


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]

мой полный код не помещается здесь скрипт

1 Ответ

2 голосов
/ 29 мая 2020

Недостаточно прокрутить позицию врага. Путь врага ограничен интервалом (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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...