Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interface graphique pour un jeu Python

Le jeu Bulls and Cows

    10 mars 2024 à 12:54:49

    En gros j'ai besoin de faire une petite interface graphique simple et efficace pour mon jeu mais je sais pas trop comment m'y prendre. J'ai regardé des vidéos mais c'est pas assez claire pour ce que je veux faire. Voici le code du jeu :

    from math import *
    from random import *
    from tkinter import *
    
    
    window = Tk()
    
    window.title("Bulls and Cows")
    
    #window.geometry("500x800")
    
    window.minsize(500, 800)
    
    window.maxsize(500, 800)
    
    label_title = Label (window, text = "BIENVENUE DANS LE JEU BULLS AND COWS !")
    label_title.pack()
    
    
    
    window.mainloop()
    
    
    
    
    def genere_secret():
        """
        none ---> str
        La fonction genere_secret permet de générer les codes secrets valides
        """
        liste = sample(range(10),4) # tire 4 chiffres différents au hasard parmi {0,...,9}
        secret ="".join([str(n) for n in liste])    # transforme la liste en texte
        return secret
    
    
    
    # Exercice 7
    
    
    def valide_code(code):
        """
        str ---> bool
        La fonction valide_code(code) qui renvoie un booléén indiquant si code est valide
        """
        # On vérifie la longueur
        if len(code) != 4:
            return False
        # On parcourt les symboles
        for i in range(4):
            # On compare le chiffre avec les suivants
            for j in range(i+1, 4):
                if code[i] == code[j]:
                    return False
            # On vérifie que c'est un chiffre
            if code[i] not in "0123456789":
                return False
        return True
    
    
    
    # Exercice 8
    
    
    def demande():
        """
        str ---> str
        La fonction demande() demande à l'utilisateur de donner un code, tant que celui-ci n'est pas valide et renvoie en sortie le code valide obtenu
        """
        code = ""
        while not valide_code(code) == True:
            code = input("Entrer un code valide : ")
        return code
    
    
    
    # Exercice 9
    
    
    def tentative(code, secret):
        """
        str, str ---> int, int
        La fonction tentative(code,secret) prend un code et le secret en entrée et renvoie le nombre de chiffres bien placés (bulls) et mal placés (cows)
        """
        bulls = 0
        cows = 0
        for i in range(4):
            if code[i] == secret[i]:
                bulls += 1
            elif secret[i] in code:
                cows += 1
        return bulls, cows
    
    
    
    # Exercice 10
    
    
    def affichage(codes, secret):
        """
        list, str ---> str
        La fonction affichage(codes, secret) prend une liste de codes et le secret, et affiche les résultats pour chacun des codes
        """
        for i in range(len(codes)):
            bulls, cows = tentative(codes[i], secret)
            print(f"{i+1}) {codes[i]} {bulls}B {cows}C")
    
    
    
    # Exercice 11
    
    
    def partie():
        """
        none ---> str
        La fonction partie() permet à l'utilisateur d'essayer de deviner le code secret choisit par l'ordinateur et lui affiche s'il trouve le code secret le nombre de coups nécessairres
        """
        # On génère un secret
        secret = genere_secret()
        #print(secret)
        n = 0
        code = ""
        codes = []
        # On continue jusqu'à ce que le secret soit trouvé
        while code != secret:
            # On demande un code à l'utilisateur
            n += 1
            if n > 5 : # Si le nombre de tentative est atteind, on sort de la boucle while
                break
            code = demande()
            codes.append(code)
            affichage(codes, secret)
        if n > 5 : # Si les 5 tentatives sont épuisées, affiche le message de défaite
            print("Vous n'avez plus de tentative ! Vous avez perdu ! Le code secret était",secret)
        else : # Sinon, affiche le message de victoire
            print(f"Bravo, vous avez trouvé en {n} tentative(s).")
    

    Les programmes du jeu sont très simples mais j'aimerais juste que le jeu soit sous forme d'une interface graphique (avec tkinter). Quelque chose comme ça à peu près :

    Je souhaite donc que ça soit sous cette forme. Nous avons donc un input où nous insérons notre code valide. Puis on a un nombre de tentatives (dans mon jeu il est limité à 5 tentatives). Et ensuite en bas nous avons notre code que nous avons tapé avec le nombre de bulls et de cows. Si le joueur trouve le nombre, on lui affiche le message de fin en lui disant en combien de tentatives il a trouvé sinon on dit qu'il a perdu. Et bien évidemment un bouton nouvelle partie pour rejouer. Le jeu est assez simple et tout est compréhensible dans mon programme. Donc si quelqu'un pourrait m'aider pour mon interface, sa ferait plaisir.



    • Partager sur Facebook
    • Partager sur Twitter
      10 mars 2024 à 19:06:36

      Bonjour,

      Si c'est à faire pour demain, ca fait un peu court...

      Pas évident pour un débutant

      • Partager sur Facebook
      • Partager sur Twitter
        11 mars 2024 à 12:38:43

        Et qu'est-ce qui tu ne comprends pas dans les vidéos pour ajouter des Entry, des Label et des Button ? le positionnement ? les interactions?

        Tu as expérimenté par toi-même des choses ?

        • Partager sur Facebook
        • Partager sur Twitter
          11 mars 2024 à 14:32:23

          Espérons qu'il a compris le code.
          • Partager sur Facebook
          • Partager sur Twitter

          Interface graphique pour un jeu Python

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown