balto.py

Created by granier-kloon

Created on January 05, 2025

6.44 KB

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

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.