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
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)
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
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