Esempio n. 1
0
 def init_backgrounds(self,biome):
     coefs = []
     temp = []
     for x in range(3,-1,-1):
         bg_name = f'B{biome}_{x}'
         temp.append(go.Background(bg_name, self.app.images[bg_name],1/(x+1)))
     return temp
Esempio n. 2
0
 def spawnObstacle(self, with_coin, mode = "classic"):
     if mode == "classic":
         _type = random.choice(["spike", "arch", "pit"])
     elif mode == "ia":
         _type = "spike" if self.lastObstacle == "pit" else "pit"
     else:
         _type = random.choice(["spike", "pit"])
     self.lastObstacle = _type
     variant = random.randint(0,1)
     obstacle = _type + str(variant)
     self.obstacles.append(go.Obstacle(_type, obstacle, self.app.images[obstacle]))
     if with_coin:
         self.spawnCoins(_type)
Esempio n. 3
0
 def spawnCoins(self, key_word=''):
     x = 1100    #bord de l'ecran (par defaut)
     y = 170     #heuteur de spawn (par defaut)
     if key_word == '':
         key_word, schema = random.choice(list(self.schemas.items()))
     else:
         schema = self.schemas[key_word]
     for ligne in schema:
         for caractere in ligne:
             if caractere == "0":
                 self.coins.append(go.Coin('coin', self.app.images['coin'], x, y))
             x += 80
         x = 1100
         y += 60
Esempio n. 4
0
    def cycleBase(self):
        if not self.paused:
            if self.players.vsIA:
                self.refreshInputs()
                #Update et affichage des backgrounds
            for bg in self.backgrounds:
                bg.update(self.speed)
                self.screen.blit(self.app.images[bg.image], bg.rects[0])
                self.screen.blit(self.app.images[bg.image], bg.rects[1])
                #Affichage de l'UI
            self.displayUI()
                #Update et affichage des obstacles
            to_delete = []
            for obstacle in self.obstacles:
                obstacle.update(self.screen, self.speed, False)
                self.screen.blit(self.app.images[obstacle.image], obstacle.rect)
                if obstacle.rect.right <=0:
                    to_delete.append(obstacle)
                for el in self.players.elements:
                    if obstacle.hitbox.colliderect(el.hitbox):
                        if obstacle.ob_type == 'pit':
                            el.in_hole = True
                            el.vel += 3
                        else:
                            self.players.kill(el)
            for ob in to_delete:
                self.obstacles.remove(ob)

                #Update et affichage des pieces
            to_delete = []
            for coin in self.coins:
                coin.update(self.speed)
                self.screen.blit(self.app.images[coin.image], coin.rect)
                if coin.rect.right <=0:
                    to_delete.append(coin)
                elif self.players.elements:
                    if coin.rect.colliderect(self.players.elements[0].hitbox):
                        to_delete.append(coin)
                        self.coin_count += 1
                        self.score += 1
                    #print('line 235 in #update et affichage des pièces, ajout de score')
            for ob in to_delete:
                self.coins.remove(ob)

            #Spawn des obstacles et des pièces
            self.counter += 1
            if self.counter% (1200//(-self.speed)) == 0:
                self.counter = 1
                temp = random.randint(0,5)
                if temp > 0:
                    arg = "vsIA" if self.players.vsIA else "classic"
                    self.spawnObstacle(True if temp > 3 else False, arg)
                else:
                    self.spawnCoins()

                #Update et affichage du/des joueur(s)
            self.players.updateElements(self.screen, False)
            self.players.drawElements(self.screen, self.app)
                #Verification rover en dehors de l'écran
            for el in self.players.elements:
                if el.rect.bottom > 730:
                    self.players.kill(el)

                #dessine les particules
            if len(self.particules) < 20:
                self.particules.append(go.Particule(self.players.elements[0].hitbox.bottomleft,
                            **self.dico_particules))
            need2del = []
            for part in self.particules:
                if self.players.elements:
                    part.update(self.players.elements[0].hitbox.bottomleft, self.dico_particules)
                    self.screen.blit(self.app.images['particule1'], part.rect)


                #Augmentation de la vitesse
            if self.counter%40 == 0 and self.speed > -23:
                self.speed -= 1

                #Augmentation du score
            self.score += 1