Пример #1
0
class Jeu:
    def __init__(self, jeu, config, vaisseau, listBullet, app, *groupes):
        self.app = app
        self._fenetre = jeu.fenetre
        #jeu.fond = (0, 0, 0)

        self.config = config
        self.jeu = jeu
        self.sound = Sound()  #jeu)
        self.listBullet = listBullet
        self.Vaisseau = vaisseau
        self.hud = Hud(jeu, self.Vaisseau)
        self.gameover = GameOver(self.jeu)

        self.listEnnemi = ListEnnemi(self.config, self.listBullet,
                                     self.Vaisseau, self.listBullet, jeu,
                                     self.sound)
        self.listMeteorite = ListMeteorite(self.config, self.listBullet,
                                           self.listEnnemi, self.sound, jeu,
                                           self.Vaisseau)

        self.vaisseauInit = Vaisseau(self.config, [])
        self.BulletInit = Bullet(self.config)
        self.EnnemiInit = Ennemi(self.config, [])
        self.MeteoriteInit = Meteorite(self.config)

        self.imgMeteorite = self.loadImg(self.MeteoriteInit.getImg())
        self.imgBullet = [
            self.loadImg(self.BulletInit.getImgType(0)),
            self.loadImg(self.BulletInit.getImgType(1))
        ]
        self.imgFond = self.loadImg("images/fond.png")

        self.imgVaisseau = []
        self.imgEnnemi = []
        for i in range(8):
            imgV = self.loadImg(self.vaisseauInit.getImgDirection(i))
            imgE = self.loadImg(self.EnnemiInit.getImgDirection(i))
            self.imgVaisseau.append(imgV)
            self.imgEnnemi.append(imgE)

    def getSurface(self):
        return self._fenetre

    def update(self):
        pygame.display.update()

    def loadImg(self, name):
        return pygame.image.load(name)

    def position(self, img, x, y):
        self._fenetre.blit(img, (x, y))

    def run(self):
        xa_mvt = 0
        ya_mvt = 0
        xb_mvt = 0
        yb_mvt = 0
        da = 0
        db = 0
        dc = 0
        dd = 0
        tir = False
        listsBullet = []

        self.sound.start()
        vitesse = self.Vaisseau.getMouvementSpeed()
        mybool = True
        while mybool:
            if self.Vaisseau.getLife() <= 0:
                ##game over
                self.gameover.go()
                self.update()
                time.sleep(2)
                mybool = False

            for event in pygame.event.get():

                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()

                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        pygame.quit()
                        quit()

                    if event.key == self.config.getUpKey():
                        ya_mvt = -vitesse
                        da = 1

                    if event.key == self.config.getDownKey():
                        yb_mvt = vitesse
                        db = 1

                    if event.key == self.config.getLeftKey():
                        xa_mvt = -vitesse
                        dc = 1

                    if event.key == self.config.getRightKey():
                        xb_mvt = vitesse
                        dd = 1

                    if event.key == self.config.getFireKey():
                        tir = True

                if event.type == pygame.KEYUP:
                    if event.key == self.config.getUpKey():
                        ya_mvt = 0
                        da = 0
                    if event.key == self.config.getDownKey():
                        yb_mvt = 0
                        db = 0
                    if event.key == self.config.getLeftKey():
                        xa_mvt = 0
                        dc = 0
                    if event.key == self.config.getRightKey():
                        xb_mvt = 0
                        dd = 0

                    if event.key == self.config.getFireKey():
                        tir = False

            time.sleep(0.02)
            #self._fenetre.fill(self.config.getBlue())
            self.position(self.imgFond, 0, 0)
            ###### ajout un enemey
            self.listEnnemi.addElemListE()

            self.listEnnemi.update()
            for elem in self.listEnnemi.getListE():
                self.position(self.imgEnnemi[elem.getDirection()],
                              self.listEnnemi.getxElemListE(elem),
                              self.listEnnemi.getyElemListE(elem))
                #self.position(self.loadImg(self.listEnnemi.getImgElemListE(elem)),self.listEnnemi.getxElemListE(elem),self.listEnnemi.getyElemListE(elem))

            #######

            ###### ajout une meteorite
            self.listMeteorite.addElemListM()

            self.listMeteorite.update()
            for elem in self.listMeteorite.getListM():
                self.position(self.imgMeteorite,
                              self.listMeteorite.getxElemListM(elem),
                              self.listMeteorite.getyElemListM(elem))

            #######

            if tir:
                self.Vaisseau.tirer()

            self.listBullet.update()
            for elem in self.listBullet.getListB():
                self.position(self.imgBullet[elem.getType()],
                              self.listBullet.getxElemListB(elem),
                              self.listBullet.getyElemListB(elem))

            self.Vaisseau.setDirection(da, db, dc, dd)
            self.Vaisseau.setx(xa_mvt + xb_mvt)

            self.Vaisseau.sety(ya_mvt + yb_mvt)
            self.Vaisseau.update()
            if self.Vaisseau.getInvincible():
                if self.Vaisseau.getInvincibleLancer() == False:
                    self.Vaisseau.setInvincibleLancer(True)
                    t1 = AnimationInvincible(self.jeu, self.Vaisseau,
                                             self.config)
                    t1.start()
            else:
                self.position(self.imgVaisseau[self.Vaisseau.getDirection()],
                              self.Vaisseau.getx(), self.Vaisseau.gety())
            self.hud.hud()
            self.update()

        self.app.menu()