Balatro mais avec moins de contenu et donc moins de lettres dans le nom. Version 0.7 du jeu.
import random # Définir les rangs (valeurs) et les couleurs (familles) des cartes rangs = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] couleurs = ["Trefle", "Carreau", "Coeur", "Pique"] # Dictionnaire pour suivre les niveaux des mains niveaux_mains = { "Carte Haute": {"compte": 0, "points_base": 0, "multi": 1}, "Paire": {"compte": 0, "points_base": 0, "multi": 2}, "Deux Paires": {"compte": 0, "points_base": 0, "multi": 3}, "Brelan": {"compte": 0, "points_base": 0, "multi": 3}, "Suite": {"compte": 0, "points_base": 0, "multi": 4}, "Couleur": {"compte": 0, "points_base": 0, "multi": 4}, "Full": {"compte": 0, "points_base": 0, "multi": 4}, "Carré": {"compte": 0, "points_base": 0, "multi": 7}, "Quinte Flush": {"compte": 0, "points_base": 0, "multi": 10} } def detecter_main(main): rangs_main = sorted([rangs.index(carte[0]) for carte in main]) couleurs_main = [carte[1] for carte in main] est_couleur = len(set(couleurs_main)) == 1 est_suite = rangs_main == list(range(rangs_main[0], rangs_main[0] + len(main))) compte_rangs = {rang: 0 for rang in rangs} for carte in main: compte_rangs[carte[0]] += 1 if len(main) == 5 and est_couleur and est_suite: return "Quinte Flush" elif 4 <= len(main) <= 5 and 4 in compte_rangs.values(): return "Carré" elif len(main) == 5 and 3 in compte_rangs.values() and 2 in compte_rangs.values(): return "Full" elif len(main) == 5 and est_couleur: return "Couleur" elif len(main) == 5 and est_suite: return "Suite" elif 3 <= len(main) <= 5 and 3 in compte_rangs.values(): return "Brelan" elif 4 <= len(main) <= 5 and list(compte_rangs.values()).count(2) == 2: return "Deux Paires" elif 2 <= len(main) <= 5 and 2 in compte_rangs.values(): return "Paire" elif 1 <= len(main) <= 5: return "Carte Haute" else: return "Carte Haute" def trier_cartes(main): return sorted(main, key=lambda carte: rangs.index(carte[0]), reverse=True) def generer_carte_aleatoire(): rang = random.choice(rangs) couleur = random.choice(couleurs) return (rang, couleur) def generer_main(): main = set() while len(main) < 7: main.add(generer_carte_aleatoire()) return list(main) def calculer_points_cartes(main): points = 0 for carte in main: if carte[0] == "A": points += 14 elif carte[0] == "K": points += 13 elif carte[0] == "Q": points += 12 elif carte[0] == "J": points += 11 else: points += int(carte[0]) return points def mettre_a_jour_niveaux(type_main): niveaux_mains[type_main]["compte"] += 1 if niveaux_mains[type_main]["compte"] % 3 == 0: niveaux_mains[type_main]["points_base"] += 15 niveaux_mains[type_main]["multi"] += 2 def clear_console(): print("\033[H\033[J", end="") def jouer_poker(): main_joueur = generer_main() points_totaux = 0 tours_joues = 0 score_minimum = 5 defausses_restantes = 20 fulls_realises = 0 while True: main_trie = trier_cartes(main_joueur) print("\nVotre main:") for carte in main_trie: print(carte[0], carte[1]) while True: try: cartes_a_selectionner = input("\nCartes à sélectionner\n(1-7, séparées par\ndes espaces) : ").split() cartes_selectionnees = [main_trie[int(position) - 1] for position in cartes_a_selectionner if 1 <= int(position) <= 7] break except (ValueError, IndexError): print("Entrée invalide. Veuillez entrer des positions valides.") print("\nCartes sélectionnées :") for carte in cartes_selectionnees: print(carte[0], carte[1]) action = input("\nVoulez-vous jouer ou\ndéfausser ces cartes ?\n(Jouer/Défausser) : ").strip().lower() if action == "defausser": if defausses_restantes > 0: for carte in cartes_selectionnees: main_joueur.remove(carte) defausses_restantes -= 1 nouvelles_cartes = [generer_carte_aleatoire() for _ in range(7 - len(main_joueur))] main_joueur.extend(nouvelles_cartes) print("Nouvelle main :") for carte in trier_cartes(main_joueur): print(carte[0], carte[1]) else: print("Vous n'avez plus de \ndéfausses restantes.") if action == "jouer": type_main = detecter_main(cartes_selectionnees) points_cartes = calculer_points_cartes(cartes_selectionnees) points_base = niveaux_mains[type_main]["points_base"] multiplicateur = niveaux_mains[type_main]["multi"] points = (points_cartes + points_base) * multiplicateur print("\nType de main :", type_main) print("Points des cartes :", points_cartes) print("Points de base :", points_base) print("Multiplicateur :", multiplicateur) if points >= score_minimum: points_totaux += points tours_joues += 1 score_minimum = score_minimum + (score_minimum * 0.25) if type_main in ["Full", "Carré", "Quinte Flush"]: fulls_realises += 1 if fulls_realises % 3 == 0: defausses_restantes += 1 mettre_a_jour_niveaux(type_main) print("Score obtenu :", points) print("\nPoints totaux après", tours_joues, "tour(s) :\n", points_totaux) # Pause après affichage du score input("Appuyez sur OK pour continuer...") clear_console() for carte in cartes_selectionnees: main_joueur.remove(carte) nouvelles_cartes = [generer_carte_aleatoire() for _ in range(7 - len(main_joueur))] main_joueur.extend(nouvelles_cartes) print("Nouvelle main après avoir joué :") for carte in trier_cartes(main_joueur): print(carte[0], carte[1]) else: print("Game Over! Vous n'avez\n pas atteint le score minimum de", score_minimum, "points.") break print("\nVous avez terminé avec", points_totaux, "points en", tours_joues, "tour(s).") # Lancer le jeu jouer_poker()