def save_json(file): # Ouvre le fichier .json with open(file, 'r') as f: data = json.load(f) # Change les valeurs des clés des données for d in data['game']: d["player"]["score"] = Player.get_score() d["player"]["health"] = Player.get_max_health() d["player"]["attack"] = Player.get_attack() d["player"]["velocity"] = Player.get_velocity() d["player"]["skin"] = Player.get_NumSkin() for n in Player.OwnedSkin: if n not in d["player"]["OwnedSkin"]: d["player"]["OwnedSkin"].append(n) d["upgrade"]["bonus"] = Player.get_bonus_lvl() d["upgrade"]["degats"] = Player.get_degat_level() d["upgrade"]["vie"] = Player.get_vie_level() d["upgrade"]["vitesse"] = Player.get_vitesse_level() d["upgrade"]["bonus_level_left"] = Player.get_bonus_lvl_left() d["enemy"]["health"] = Enemy.G_health() d["enemy"]["attack"] = Enemy.G_attack() d["enemy"]["velocity"] = Enemy.G_velocity() d["enemy"]["frequence_tir"] = Enemy.G_fre_tir() d["ammo_enemy"]["velocity"] = AmmoEnemy.get_velocity() d["ammo"]["velocity"] = Ammo.get_velocity() # Modifie le fichier .json avec les données ci-dessus with open(file, 'w') as f: json.dump(data, f, indent=2) print('Save Complete')
def Shop(): shop = True while shop: screen.blit(background, (0, 0)) screen.blit(shop_txt, (int(screen_width / 2 - shop_txt.get_width() / 2), 10)) score_text = font.render("Score : " + str(game.player.get_score()), True, (255, 255, 255)) screen.blit(score_text, (10, -5)) if Player.get_vitesse_level() >= 15: list_tile[0].locked = True if Player.get_degat_level() >= 15: list_tile[1].locked = True if Player.get_vie_level() >= 20: list_tile[2].locked = True if Player.get_bonus_lvl() >= 10: list_tile[3].locked = True elif Player.get_bonus_lvl_left() > 0: list_tile[3].locked = False if list_tile[0].locked: list_tile[0].image = pygame.image.load( 'images/shop/ShopTileVitBackLocked.png') if list_tile[1].locked: list_tile[1].image = pygame.image.load( 'images/shop/ShopTileDegBackLocked.png') if list_tile[2].locked: list_tile[2].image = pygame.image.load( 'images/shop/ShopTileVieBackLocked.png') if list_tile[3].locked: list_tile[3].image = pygame.image.load( 'images/shop/ShopTileBonusBackLocked.png') # Draw celui qui est devant en premier if not shop_tile1.back: shop_tile2.draw(screen) shop_tile3.draw(screen) shop_tile4.draw(screen) shop_tile1.draw(screen) elif not shop_tile2.back: shop_tile3.draw(screen) shop_tile4.draw(screen) shop_tile1.draw(screen) shop_tile2.draw(screen) elif not shop_tile3.back: shop_tile4.draw(screen) shop_tile1.draw(screen) shop_tile2.draw(screen) shop_tile3.draw(screen) elif not shop_tile4.back: shop_tile1.draw(screen) shop_tile2.draw(screen) shop_tile3.draw(screen) shop_tile4.draw(screen) # Change les textes list_tile[0].text = 'Vitesse Niveau : ' + str( Player.get_vitesse_level()) list_tile[1].text = 'Dégats Niveau : ' + str(Player.get_degat_level()) list_tile[2].text = 'Vie Niveau : ' + str(Player.get_vie_level()) list_tile[3].text = 'Bonus Niveau : ' + str(Player.get_bonus_lvl()) list_tile[0].textPrice = 'Prix : ' + str( Player.get_vitesse_level() * 1000) list_tile[1].textPrice = 'Prix : ' + str( Player.get_degat_level() * 2000) list_tile[2].textPrice = 'Prix : ' + str( Player.get_vie_level() * 5000) list_tile[3].textPrice = 'Prix : ' + str( Player.get_bonus_lvl() * 5000) arrow_left.draw(screen) arrow_right.draw(screen) retour_btn.draw(screen) SkinShop_btn.draw(screen) pygame.display.flip() for event in pygame.event.get(): pos = pygame.mouse.get_pos() if event.type == pygame.MOUSEBUTTONDOWN: if retour_btn.isOver(pos): save_json('Saves/save.json') menu() if SkinShop_btn.isOver(pos): save_json('Saves/save.json') SkinShop() # quand on clique sur une des flèche if arrow_right.isOver(pos): # bouge les tiles de gauche a droite for j in range(len(list_tile)): list_tile[j].move(True) # met celui qui est devant en background = false et le reste en true for m in range(len(list_tile)): if list_tile[m].x == list_TileX[0] and list_tile[ m].y == list_TileY[0]: list_tile[m].back = False else: list_tile[m].back = True elif arrow_left.isOver(pos): # bouge les tiles de droite a gauche for n in range(len(list_tile)): list_tile[n].move() # met celui qui est devant en background = false et le reste en true for v in range(len(list_tile)): if list_tile[v].x == list_TileX[0] and list_tile[ v].y == list_TileY[0]: list_tile[v].back = False else: list_tile[v].back = True # change les images en fonction du boolean background list_tile[0].fakeAnTile('images/shop/ShopTileVitBack.png', 'images/shop/ShopTileVit.png') list_tile[1].fakeAnTile('images/shop/ShopTileDegBack.png', 'images/shop/ShopTileDeg.png') list_tile[2].fakeAnTile('images/shop/ShopTileVieBack.png', 'images/shop/ShopTileVie.png') list_tile[3].fakeAnTile('images/shop/ShopTileBonusBack.png', 'images/shop/ShopTileBonus.png') if list_tile[0].isOver(pos) and not list_tile[ 0].back and not list_tile[0].locked: if Player.get_score() >= 1000 * Player.get_vitesse_level(): Player.set_score(Player.get_score() - (1000 * Player.get_vitesse_level())) Player.set_vitesse_level(Player.get_vitesse_level() + 1) if Player.get_vitesse_level() % 10 == 0: Enemy.set_attack(Enemy.G_attack() + 2) elif Player.get_vitesse_level() % 5 == 0: Enemy.set_freq_tir(Enemy.G_fre_tir() - 2) elif Player.get_vitesse_level() % 1 == 0: Player.set_velocity(Player.get_velocity() + 1) if Player.get_vitesse_level() == 15: list_tile[0].locked = True list_tile[0].image = pygame.image.load( 'images/shop/ShopTileVitBackLocked.png') if list_tile[1].isOver(pos) and not list_tile[ 1].back and not list_tile[1].locked: if Player.get_score() >= 2000 * Player.get_degat_level(): Player.set_score(Player.get_score() - (2000 * Player.get_degat_level())) Player.set_degat_level(Player.get_degat_level() + 1) if Player.get_degat_level() % 10 == 0: Enemy.set_velocity(Enemy.G_velocity() + 1) elif Player.get_degat_level() % 5 == 0: Enemy.set_health(Enemy.G_health() + 1) elif Player.get_degat_level() % 1 == 0: Player.set_attack(Player.get_attack() + 1) if Player.get_degat_level() == 15: list_tile[1].locked = True list_tile[1].image = pygame.image.load( 'images/shop/ShopTileDegBackLocked.png') if list_tile[2].isOver(pos) and not list_tile[ 2].back and not list_tile[2].locked: if Player.get_score() >= 5000 * Player.get_vie_level(): Player.set_score(Player.get_score() - (5000 * Player.get_vie_level())) Player.set_vie_level(Player.get_vie_level() + 1) if Player.get_vie_level() % 2 == 0: Player.set_bonus_lvl_left( Player.get_bonus_lvl_left() + 1) elif Player.get_vie_level() % 5 == 0: Enemy.set_health(Enemy.G_health() + 1) elif Player.get_vie_level() % 1 == 0: Player.set_max_health(Player.get_max_health() + 1) if Player.get_degat_level() == 20: list_tile[2].locked = True list_tile[2].image = pygame.image.load( 'images/shop/ShopTileVieBackLocked.png') if list_tile[3].isOver(pos) and not list_tile[ 3].back and not list_tile[3].locked: if Player.get_score() >= 5000 * Player.get_bonus_lvl(): Player.set_score(Player.get_score() - (5000 * Player.get_bonus_lvl())) Player.set_bonus_lvl(Player.get_bonus_lvl() + 1) Player.set_bonus_lvl_left(Player.get_bonus_lvl_left() - 1) if Player.get_bonus_lvl( ) == 20 or Player.get_bonus_lvl_left() == 0: list_tile[3].locked = True list_tile[3].image = pygame.image.load( 'images/shop/ShopTileBonusBackLocked.png') if event.type == pygame.MOUSEMOTION: arrow_right.fakeAnimationR(pos) arrow_left.fakeAnimationL(pos) if retour_btn.isOver(pos): retour_btn.color = (255, 50, 50) else: retour_btn.color = (50, 50, 50) if SkinShop_btn.isOver(pos): SkinShop_btn.color = (255, 50, 50) else: SkinShop_btn.color = (50, 50, 50) if event.type == pygame.QUIT: save_json('Saves/save.json') sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: # Echap pour Menu save_json('Saves/save.json') menu()