Exemple #1
0
def main():
    # Initialisation de la fenêtre d'affichage
    pygame.init()
    Config.screen = pygame.display.set_mode(
        (Config.screenWidth, Config.screenHeight), HWSURFACE | DOUBLEBUF)
    pygame.display.set_caption(Config.titre)

    # le son
    pygame.mixer.init(44100, -16, 2, 4096)

    # le logo d'hommage ^^
    Config.logo, Config.logo_r = Tools.load_png('logo.png')

    # les bords de la surface de jeu
    Config.bords = Border.Border()

    # le niveau
    Level.LoadLevel(Config.level)

    if Config.bossLevel:
        # niveau d'un boss
        Boss.doBossLevel()
    else:
        # le fond
        Tools.InitBG()

    Tools.ReadHighScore()

    # la zone d'info
    Config.zinfo = pygame.Surface([(Config.screenWidth - Config.bords.width),
                                   Config.screenHeight])
    Config.zinfo.fill(THECOLORS["black"])

    # Le joueur (la raquette)
    Config.player = Player.Bat('player-bat-02.png', 'player-bat-02-L.png',
                               'player-bat-02-S.png')

    # La première balle
    Ball.BallInit()

    # les ennemis
    Enemys.init()

    # les sons
    Tools.InitSounds()
    pygame.mixer.music.set_volume((Config.Volume / 100))

    # Affichage
    Config.screen.blit(Config.bg, (0, 0))
    Config.bords.draw()
    Tools.MsgInfo()
    Level.DrawLevel()
    Config.player.draw()
    Ball.Ballsdraw()
    Enemys.draw()
    pygame.display.flip()

    # Initialisation de l'horloge
    Config.clock = pygame.time.Clock()

    # timer user pour la màj des fps (déclenché 1 fois/seconde)
    pygame.time.set_timer(USEREVENT, 1000)
    # timer pour la génération des ennemis (déclenché toutes les 10s)
    pygame.time.set_timer((USEREVENT + 1), 10000)
    # timer pour la génération des bombes et missiles du boss (déclenché toutes les 5s)
    pygame.time.set_timer((USEREVENT + 2), 5000)

    Config.Sounds['intro'].play()

    # Boucle d'évènements
    while True:
        event_handler()

        dt = Config.clock.tick(Config.FPS) / 1000

        Ball.Ballsupdate()

        if Config.Perdu:
            Config.life -= 1
            if Config.life > 0:
                Tools.MsgCenter("Oops...", 28,
                                Config.zinfo.get_rect().centery, "cyan", True)
                pygame.display.flip()
                # petite tempo
                pygame.time.wait(1500)
                Config.Perdu = False
                Bonus.initBonus()
                Config.player.reset()
                Ball.BallInit()
            else:
                # perdu...
                Tools.GameOver()
        else:
            if Config.bossLevel:
                if Config.boss.update():
                    Config.life -= 1
                    if Config.life <= 0:
                        # perdu...
                        Tools.GameOver()
            Config.player.update()
            Bonus.update()
            Enemys.update()

        if Config.bossLevel:
            if Config.boss.isDead:
                # niveau suivant
                Tools.MsgCenter("!! Bravo !!", 28,
                                Config.zinfo.get_rect().centery, "blue", True)
                pygame.display.flip()
                # petite tempo
                pygame.time.wait(5000)
                Tools.NextLevel()

        if Level.FinishedLevel():
            # niveau suivant
            Tools.MsgCenter("Level UP!", 28,
                            Config.zinfo.get_rect().centery, "green", True)
            pygame.display.flip()
            # petite tempo
            pygame.time.wait(1500)
            Tools.NextLevel()

        # affichages
        Config.screen.blit(Config.bg, (0, 0))
        Config.bords.draw()
        Tools.MsgInfo()
        Level.DrawLevel()
        Config.player.draw()
        Ball.Ballsdraw()
        Bonus.draw()
        Bonus.drawAdds()
        Enemys.draw()
        pygame.display.flip()