IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Projet de UNO


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Projet de UNO
    Bonjour tout le monde, nous sommes en terminale et avons un projet de fin d'année a faire sur python. Nous avons bien avancé le fonctionnement du jeu (sans interface) et avon commencer a afficher le plateau de jeu et les carte du joueur et de l'adversaire, ainsi que le talon sur lequel on joue les carte. Cependant nous sommes bloqués : il faut sélectionner une carte et vérifier si elle est jouables sur le paquet. Avant ca, il faut verifier si le joueur a au moins une carte jouables et sinon, il pioche automatiquement.. Ces fonctions ont été faites mais sans interface Tkinter. Pouvez vous jeter un coup d'oeil au code et nous aidez ? Merci !
    PS: les images des cartes sont dans un dossier imagecarte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
     
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Sun Apr  8 17:01:04 2018
     
    @author: Arnold
    """
     
    import random  
     
    from random import choice   
    import tkinter as tk 
     
     
     
    def initialisation():       
        joker=["+4","+4","jV","jV","4c","4c","jJ","jJ","sV","sV","+4","+4","sJ","sJ","4c","4c","jB","jB","sB","sB","jR","jR","sR","sR"]       
        cartes=["9V","9V","8V","8V","7V","7V","6V","6V","5V","5V","4V","4V","3V","3V","2V","2V","1V","1V","0V","9J","9J","8J","8J","7J","7J","6J","6J","5J","5J","4J","4J","3J","3J","2J","2J","1J","1J","0J","9R","9R","8R","8R","7R","7R","6R","6R","5R","5R","4R","4R","3R","3R","2R","2R","1R","1R","0R","9B","9B","8B","8B","7B","7B","6B","6B","5B","5B","4B","4B","3B","3B","2B","2B","1B","1B","0B"]      
        random.shuffle (joker)   
        random.shuffle (cartes)  
     
        images_cartes = dict()
        for carte in set(cartes): 
            image = "imagecarte/" + carte.lower() + ".png" 
            images_cartes[carte] = tk.PhotoImage(file=image)
        talon=[cartes.pop()] 
     
        image_joker = dict ()
        for carte in set (joker):
            image = "imagecarte/" + carte.lower() + ".png"
            image_joker[carte] = tk.PhotoImage(file=image) 
     
        cartes.extend(joker)
        random.shuffle(cartes)
        images_cartes.update(image_joker)
        carte_joueur_1=[]        
        carte_joueur_2=[]          
        for i in range (7):         
            carte_joueur_1.append(cartes.pop())         
            carte_joueur_2.append(cartes.pop())          
        return images_cartes,joker,cartes,carte_joueur_1,carte_joueur_2,talon      
     
    def carte_posable ():     
        valeur, couleur = talon[-1][0], talon[-1][1]   
        for carte in carte_joueur_1:   
                if carte[0] == valeur or carte[1] == couleur or carte=="+4" or carte=="4c":   
                    carte_jouee = input("Que jouez-vous ?    ")      
                    coup_possible (carte_jouee)    
                    return;  
     
        pioche = cartes.pop()   
        print("Tu as pioché la carte : ", pioche )     
        if pioche[0] == talon[-1][0] or pioche [1] == talon[-1][1] or pioche=="+4" or pioche[1] == talon[-1][0] or pioche[0] == talon[-1][1] or pioche=="4c":  # et si on pioche un joker ? // verifier toute les conditions si il peut jouer et relancer carte posable 
            print ("Tu peux jouer la carte piochée")  
            carte_joueur_1.append (pioche) 
            print (carte_joueur_1) 
            carte_jouee = input("Que jouez-vous ?    ")      
            coup_possible (carte_jouee) 
            return; 
        else :   
            carte_joueur_1.append (pioche )      
     
     
    def coup_possible (carte_jouee):       
     
        if carte_jouee == '+4':   # +4 
            carte_joueur_1.remove(carte_jouee)   
            talon.append(carte_jouee)          
            print("Tu as joué cette carte et quelle couleur choisis tu ?")    
            nouvelle_couleur = ["+"] 
            nouvelle_couleur.append (input ("Ecris la premiere lettre de ta couleur :  ")) 
            talon [-1]= "".join(nouvelle_couleur) 
            print ("le joueur joue sur un  ", talon[-1]) 
            for i in range (4):        # +4  carte à l'adversaire 
                carte_joueur_2.append(cartes.pop()) 
     
        elif carte_jouee == '4c': 
            carte_joueur_1.remove(carte_jouee)   
            talon.append(carte_jouee)          
            print("Tu as joué un changement de couleur, quelle couleur choisis tu ?")    
            nouvelle_couleur = ["*"] #pour que le joeur puisse jouer que une carte de la couleur du talon (pas de valeur) 
            nouvelle_couleur.append (input ("Ecris la premiere lettre de ta couleur :  ")) 
            talon [-1]= "".join(nouvelle_couleur) 
        elif carte_jouee [1] == talon[-1][1] and carte_jouee [0] == "j" or talon[-1][0]=="j" and carte_jouee [0] == "j":    # +2 
            carte_joueur_1.remove(carte_jouee)   
            talon.append(carte_jouee) 
            print ("Tu as joué un +2") 
            for i in range (2):        # +2  carte à l'adversaire 
                carte_joueur_2.append(cartes.pop()) 
     
        elif carte_jouee [0] == "s" and carte_jouee [1]==talon[-1][1] or talon[-1][0]=="s" and carte_jouee [0]=="s" : # joker passe ton tour 
            carte_joueur_1.remove(carte_jouee)   
            talon.append(carte_jouee)   
            print(" Tu sautes le tour de l'adversaire ! Rejoue encore.") 
            carte_posable () 
     
        elif carte_jouee[1]==talon[-1][1] or carte_jouee[0]==talon[-1][0]:       
     
            carte_joueur_1.remove(carte_jouee)   
     
            talon.append(carte_jouee)          
     
            print("Tu as joué cette carte")       
     
        else:       
            print("Carte impossible à jouer: chosis une autre carte")        
            carte_jouee = input("Que jouez-vous ?    ")      
            coup_possible (carte_jouee)    
     
    def ordinateur () :   
        cartes_jouables = []   
        valeur, couleur = talon[-1][0], talon[-1][1]    
        for carte in carte_joueur_2:   
             if carte[0] == valeur or carte[1] == couleur or carte=="+4" or carte=="4c":   
                 cartes_jouables.append(carte)  # est ce que ca prend TOUTES les cartes qu'il peut jouer ou que la première ? 
                 carte_jouee_ordi = choice (cartes_jouables)   
                 if carte_jouee_ordi == '+4': 
                     carte_joueur_2.remove(carte_jouee_ordi)   
                     talon.append(carte_jouee_ordi)           
                     nouvelle_couleur = ["+"] 
                     liste= ["B","V","J","R"] 
                     nouvelle_couleur.append (random.choice(liste)) 
                     talon [-1]= "".join(nouvelle_couleur) 
                     print ("L'adversaire vient de jouer un +4")  
                     print ("Tu dois jouer sur du ", talon[-1][1]) 
                     for i in range (4):        # +4  carte dans tes cartes 
                         carte_joueur_1.append(cartes.pop())  
                     return;  
                 elif carte_jouee_ordi == '4c': 
                     carte_joueur_2.remove(carte_jouee_ordi)   
                     talon.append(carte_jouee_ordi)          
                     print("L'ordinateur a joué un changement de couleur")   
                     liste= ["B","V","J","R"] 
                     nouvelle_couleur = ["*"]  
                     nouvelle_couleur.append (random.choice (liste)) 
                     talon [-1]= "".join(nouvelle_couleur) 
                     print ("Tu dois jouer sur du ", talon[-1][1]) 
                     return; 
                 elif carte_jouee_ordi [1] == talon[-1][1] and carte_jouee_ordi [0] == "j" or talon[-1][0]=="j" and carte_jouee_ordi [0] == "j":    # +2 
                     carte_joueur_2.remove(carte_jouee_ordi)   
                     talon.append(carte_jouee_ordi) 
                     print("L'adversaire as joué un +2")    
                     print ("La dernière carte posée est :  ",talon [-1]  ) 
                     for i in range (2):        # +2  carte à l'adversaire 
                         carte_joueur_1.append(cartes.pop()) 
                     return; 
                 elif carte_jouee_ordi [0] == "s" and carte_jouee_ordi [1]==talon[-1][1] or talon[-1][0]=="s" and carte_jouee_ordi [0]=="s" : # joker passe ton tour 
                     carte_joueur_2.remove(carte_jouee_ordi)   
                     talon.append(carte_jouee_ordi)   
                     print("L'adversaire as joué un joker :", talon[-1]) 
                     print(" L'adversaire saute ton tour ! Il rejoue encore.") 
                     ordinateur () 
                     return; 
                 elif carte_jouee_ordi [1]==talon[-1][1] or carte_jouee_ordi[0]==talon[-1][0]:       
                     carte_joueur_2.remove(carte_jouee_ordi)   
                     talon.append(carte_jouee_ordi)          
                     print("L'adversaire a joué un  :" ,talon [-1])  
                     return; 
     
        pioche_ordi = cartes.pop()   
        print("L'adversaire pioche un :  ", pioche_ordi)       
        if pioche_ordi [0] == talon[-1][0] or pioche_ordi [1] == talon[-1][1] or pioche_ordi=="+4" or pioche_ordi[1] == talon[-1][0] or pioche_ordi[0] == talon[-1][1] or pioche_ordi=="4c":   
            print ("L'adversaire peut jouer la carte piochée")  
            carte_joueur_2.append (pioche_ordi) 
            ordinateur () 
        else :   
            carte_joueur_2.append (pioche_ordi )       
     
     
    #INTERFACE GRAPHIQUE
     
    LARGEUR_TABLE = 1000 
    HAUTEUR_TABLE = 600  
     
    uno= tk.Tk()
    images_cartes,joker,cartes,carte_joueur_1,carte_joueur_2,talon = initialisation()  # Distribution des cartes 
     
     
    # Largeur et hauteur des cartes (on prend en base celles de la 1ère carte) 
    LARGEUR_CARTE = images_cartes[cartes[0]].width()  #comment reduire la taille des cartes ?
    HAUTEUR_CARTE = images_cartes[cartes[0]].height() 
    # Chevauchement des cartes du joueur sur la table
    CHEVAUCHEMENT_CARTE = int(LARGEUR_CARTE / 2)
    # Décalage vers le haut lorsqu'une carte est cliquée
    DECALAGE_SELECTION_CARTE = int(HAUTEUR_CARTE / 3)
     
    # coordonnée sur la table de jeu de l'image du talon
    COORD_TALON = (
        int(LARGEUR_TABLE / 2 + LARGEUR_CARTE + 50),
        300,
    )
     
    # coordonnée sur la table de jeu de l'image de la pioche
    COORD_PIOCHE = (
        int(LARGEUR_TABLE / 2 - LARGEUR_CARTE - 50),
        int(HAUTEUR_TABLE / 2),
    )
     
    table_jeu = tk.Canvas(uno, width=LARGEUR_TABLE, height=HAUTEUR_TABLE, bg="green")
    table_jeu.grid()
     
    # Création sur la table du talon
    z=int(LARGEUR_TABLE / 2 + LARGEUR_CARTE + 50)
    image_talon = []
    for carte in talon :    #comment faire pour que ca affiche que la derniere valeur du talon ?
        image_id = table_jeu.create_image(z, 300, image=images_cartes[carte], tags="carte_talon")
        image_talon.append(image_id)
     
     
    # Création sur la table des images des cartes du joueur1.
    x = LARGEUR_TABLE / 2 - CHEVAUCHEMENT_CARTE * 3.5 # 3.5 = 7 (cartes) / 2
    images_cartes_joueur_1 = []
    for carte in carte_joueur_1:
        image_id = table_jeu.create_image(x, 500, image=images_cartes[carte], tags="carte_joueur_1")
        images_cartes_joueur_1.append(image_id)
        x += CHEVAUCHEMENT_CARTE
     
     # Création sur la table des images des l'ordi.
    w = LARGEUR_TABLE / 2 - CHEVAUCHEMENT_CARTE * 3.5 # 3.5 = 7 (cartes) / 2
    images_cartes_joueur_2 = []
    for carte in carte_joueur_2:
        image_id = table_jeu.create_image(w, 150, image=images_cartes[carte], tags="carte_joueur_2")
        images_cartes_joueur_2.append(image_id)
        w += CHEVAUCHEMENT_CARTE
     
    image_talon = None
    selection_carte = None 
     
     
     
     
    uno.mainloop()    
     
     
     
     
    while carte_joueur_1 and carte_joueur_2 : 
        carte_posable ()    
        if len (carte_joueur_1)== 0:
            print ("Tu as gagné la partie")
            break ;
        print ("Tes cartes sont donc :   ",carte_joueur_1) 
     
        ordinateur ()
        if len (carte_joueur_2)== 0:
            print ("L'adversaire a gagné la partie")
            break ;
        print ("Tes nouvelles cartes sont ", carte_joueur_1)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Salut,

    Citation Envoyé par Arnoanais Voir le message
    Pouvez vous jeter un coup d'oeil au code et nous aidez ?
    Vous devriez sauvegarder précieusement la mouture console qui fonctionne dans un coin. Puis apprenez à programmer avec tkinter sans trop penser à votre projet.
    Cela fait, il va falloir construire une nouvelle application.
    Vous pourrez aller piocher quelques détails dans l'ancienne mais pas plus.
    Dit autrement, il faut partir "page (presque) blanche".
    Si vous espérez y arriver en ajoutant un peu de tkinter à ce que vous avez déjà fait, vous n'y arriverez pas.

    - W

Discussions similaires

  1. Projet UNO
    Par afmb2 dans le forum Débuter
    Réponses: 1
    Dernier message: 18/05/2014, 15h40
  2. Qu'est ce qu'un grand projet ?
    Par Geronimo dans le forum Débats sur le développement - Le Best Of
    Réponses: 62
    Dernier message: 04/04/2013, 15h52
  3. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 16h33
  4. Réponses: 6
    Dernier message: 21/06/2002, 15h48
  5. Les fichiers d'un projet
    Par Manolo dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/05/2002, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo