如何使玩家进入pygame的新境界

时间:2019-06-28 10:42:34

标签: python pygame

当我的玩家到达地图的尽头时,我希望它进入下一个级别。我已经创建了第一级,并且一切正常。我要做的是,当玩家完成第1级时,我想加载另一张可以在其上前进的地图。但是我不知道该怎么做。这是我的代码片段

def runGame(theGame):

    theGame.clock.tick(FPS)

    # This function consists code for Events
    theGame.events()
    # This function consists code from enemy hit events
    theGame.hit_or_not()
    # This function consists code for player movements
    theGame.movements()
    # This function consists code for drawing the sprites over the screen
    theGame.redrawGameWindow()


def readyGame(run, gameOver):
    game = Game()

    while run:
        runGame(game)

        keys = pygame.key.get_pressed()

        if keys[pygame.K_x]:
            game = Game()
        elif keys[pygame.K_ESCAPE]:
            run = False
        pygame.event.pump()

        if gameOver:
            runGame(game)


readyGame(True, False)

这是我的第一级代码,它是我的全部代码:https://pastebin.com/yRb8T6ku(游戏类)

是否需要像为第一级创建另一个类一样为第二级创建另一个类?

1 个答案:

答案 0 :(得分:1)

首先,一些与您的具体问题无关的建议: 不要使用敌人= ...,敌人2 = ...,敌人3 = ...等。使用列表

self.enemies = [
  enemy(),
  enemy(),
  enemy()
]

当您可以将大多数方法更改为循环时,平台和硬币的方式相同:

    def hit_or_not(self):
        # Checking Collision of Enemy and Hero
        for enemy in self.enemies:
            self.enemyCollide(self.hero, enemy)

然后,让我们看看什么是水平。我认为是英雄,敌人,平台和金币,所以要声明

LEVELS = [
  {  # level1
    'enemies': [ 
      enemy(...),  # move here from your Game.__init__
      enemy(...),
      ....
    ],
    'platforms': [
      Platform(...),
      ...
    ]
    'coins': [
      Coins(...),
      ...
    'hero': thePlayer(...)
    ]
  }
  {  # level2
    ...
  }
  ...
] 

然后您可以切换到类似这样的水平:

# in the Game class
def switchLevel(self, levelno):
   self.hero = LEVELS[levelno]['hero']
   self.enemies = LEVELS[levelno]['enemies']
   self.platforms = LEVELS[levelno]['platforms']
   self.coins = LEVELS[levelno]['coins']

因此,当您决定切换级别时,请执行

game.switchLevel(...)
game.redrawGameWindow()