Problème condition liste
Résolu
Antoine
-
Antoine -
Antoine -
Bonjour, je m'appelle Antoine, dans le cadre de mon projet ISN en terminale S, je dois réaliser un projet python. J'ai choisi de programmer un jeu de carte, le UNO, voici programme pour l'instant,
La fonction initialisation distribue les cartes aux 2 joueurs et choisit la première carte du jeu (talon) sur lequel va "s'empiler" les autres cartes.
La fonction carte_posable cherche a vérifier avant que le joueur ne joue si il va pouvoir jouer une carte (si oui, la fonction coup_possible se lance, si non, le joueur n'a pas d'autre choix que de piocher). Cependant quand je teste ce programme la condition if de carte_posable n'est jamais vérifié et le joueur pioche systématiquement une carte, je ne vois pas mon erreur sur le if. Pourriez vous m'aider ? Merci
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from random import shuffle def initialisation(): cartes=["+4","+4","invV","invV","+2V","+2V","9V","8V","8V","7V","7V","6V","4V","4V","3V","3V","2V","2V","4c","4c","invJ","invJ","+2J","+2J","9J","8J","8J","7J","7J","6J","4J","4J","3J","3J","2J","2J","stopV","stopV","9V","+4","+4","invB","6V","5V","5V","9B","8B","8B","1V","1V","0V","4B","4B","3B","stopJ","stopJ","9J","4c","4c","invR","6J","5J","5J","1J","1J","0J","9R","8R","8R","4R","4R","3R","invB","+2B","+2B","stopB","stopB","9B","7B","7B","6B","6B","5B","5B","3B","2B","2B","1B","1B","0B","invR","+2R","+2","stopR","stopR","9R","7R","7R","6R","6R","5R","5R","3R","2R","2R","1R","1R","0R"] shuffle(cartes) carte_joueur_1=[] carte_joueur_2=[] for i in range (7): carte_joueur_1.append(cartes.pop()) carte_joueur_2.append(cartes.pop()) talon=[cartes.pop()] return cartes,carte_joueur_1,carte_joueur_2,talon def carte_posable (): if carte_joueur_1[:][1]==talon[-1][1] or carte_joueur_1[:][0]==talon[-1][0]: carte_jouee = input("Que jouez-vous ?") coup_possible (carte_jouee) else: print("Pioche") carte_joueur_1.append (cartes [-1] ) cartes.remove(cartes [-1] ) def coup_possible (carte_jouee): if carte_jouee[1]==talon[-1][1] or carte_jouee[0]==talon[-1][0]: talon.append(carte_jouee) carte_joueur_1.remove(carte_jouee) print("tu peux jouer cette carte") else: print("Joue une autre carte") # Distribution des cartes cartes,carte_joueur_1,carte_joueur_2,talon = initialisation() print(talon) print(carte_joueur_1) carte_posable ()
La fonction initialisation distribue les cartes aux 2 joueurs et choisit la première carte du jeu (talon) sur lequel va "s'empiler" les autres cartes.
La fonction carte_posable cherche a vérifier avant que le joueur ne joue si il va pouvoir jouer une carte (si oui, la fonction coup_possible se lance, si non, le joueur n'a pas d'autre choix que de piocher). Cependant quand je teste ce programme la condition if de carte_posable n'est jamais vérifié et le joueur pioche systématiquement une carte, je ne vois pas mon erreur sur le if. Pourriez vous m'aider ? Merci
A voir également:
- Problème condition liste
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
1 réponse
Bonjour,
Il suffit de faire un print de
De plus pourquoi faire des copies de liste
Pourquoi ne comparer que la 1ère carte et non toutes les cartes du joueur avec la valeur du talon ?
Il suffit de faire un print de
carte_joueur_1[:][0]dans ta fonction pour comprendre que tes comparaisons sont incorrectes, en effet tu compares ce que vaut la 1ère carte en totalité avec ce que vaut le dernier caractère du talon, évidemment cette condition ne sera jamais vérifiée.
De plus pourquoi faire des copies de liste
carte_joueur_1[:]pour uniquement faire une comparaison ?
Pourquoi ne comparer que la 1ère carte et non toutes les cartes du joueur avec la valeur du talon ?
Faire des comparaisons c'est facile, sauf que tes cartes ont des formats différents, ce qui donne des cas de figures où les comparaisons vont être difficiles à faire.
Par exemple que faire si le talon vaut +4, invB ou encore +2V ?
On doit comparer quoi au juste ? Y a t-il des cartes à ne pas comparer ?
Les jokers, ce sont les +quelque choses ?
Déjà, il y a une erreur dans tes cartes, il y a un +2 sans le R.
Ensuite, si le joueur à un joker, il peut, je suppose si c'est un +2(RVBJ) le jouer sur toutes les cartes de la même couleur ?
Si c'est un +4, il peut le jouer sur n'importe quelle couleur ou valeur de cartes ?
En revanche si le talon est un joker, comment cela se passe dans le jeu ?
Voici un prémice de ce que pourrait donner sans la gestion des jokers.