Aide programme jeux des allumettes

Signaler
Messages postés
3
Date d'inscription
jeudi 22 janvier 2015
Statut
Membre
Dernière intervention
22 janvier 2015
-
Messages postés
69
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2018
-
Bonjour,
Je dois realiser un jeux sous python,dans ce jeu deux joueurs font face à un tas de cailloux et on leur a donné une liste de tailles. Chacun leur tour ils ont le choix de prendre un nombre de cailloux correspondant à une des tailles valides.

Celui qui prend le dernier caillou à gagner.

Il y a 4 listes:
L=[1,2,5] pour 15 cailloux donc si la liste 1 sort je n'ai le droit que de jouer 1 ou 2 ou 5 et il y a 15 cailloux en tout.
L=[1,2,3,5,7,11,13,17] 300 cailloux
L=[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484] 500 cailloux
L=[1,10,100,100] 2000 cailloux

J'ai réussi à faire un programme mais celui ci me permet de gagner seulement pour les 2 premières listes.
Pour les 2 dernières je n'y arrive pas.
Merci de votre aide
A voir également:

3 réponses

Messages postés
14464
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 juillet 2020
420
Bonjour,

pour que l'on puisse t'aider, il faudrait:
- Poser une question.
- Montrer le code que tu as écrit, avec la coloration syntaxique.
- S"il y a un message d'erreur, retranscrire entièrement et préciser quelle ligne le génère.
Messages postés
69
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2018
6
Je sais pas si j'ai tout compris à ton problème et sans connaître les contraintes imposées par ton professeur j'ai fait ce petit bout de code qui pourra peut-être répondre a ta question ou du moins te faire progresser :

# -*- coding:UTF-8 -*-

print "Jeu dans lequel 2 joueurs piochent à tour de rôle un nombre de cailloux dans \nun éventail de choix imposé dans le but de rammasser le ou les derniers du tas.\n\n"

#dictionnaire clé:nombre de cailloux, valeur pour chaque clé:les choix possibles
NBR_CAILLOUX__CHOIX_POSSIBLES = {15:[1,2,5],
                                300:[1,2,3,5,7,11,13,17],
                                500:[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484],
                                2000:[1,10,100,200]}
                                
#nombre de cailloux initiaux désirés, la 'rep' sera la clé du dictionnaire
rep = 0
while not int(rep) in NBR_CAILLOUX__CHOIX_POSSIBLES.keys():
    rep = raw_input("Nombre de cailloux dans le tas (15,300,500,2000) ? : ") # 'raw_input() renvoie un objet String
    if not rep.isdigit():
        rep = 0

nbrCailloux = int(rep) # on doit donc convertir la 'rep' en entier pour son affectation
CHOIX_POSSIBLES = NBR_CAILLOUX__CHOIX_POSSIBLES[nbrCailloux] # accès à la valeur du dictionnaire par sa clé
choixValides = [] # contiendra les choix valides en fonction des cailloux restants

#qui sont les joueurs ?
JOUEUR1 = raw_input("Nom du Joueur 1 : ")
JOUEUR2 = raw_input("Nom du Joueur 2 : ")
joueurActuel = JOUEUR1 #joueur 1 à la main

# petite boucle principale 
partieTerminee = False
while not partieTerminee:
    #on remplie la liste des choix valides
    choixValides = []    
    for choixPossible in CHOIX_POSSIBLES:
        if nbrCailloux - choixPossible >= 0:
            choixValides.append(choixPossible)
            
    print " "
    print "Il y a %s cailloux"%nbrCailloux
    print "Choix valides : ",choixValides

    #on récupère un choix valide du joueur actuel
    choixJoueur = 0
    while choixJoueur == 0:
        choixJoueur = raw_input("Votre choix %s ? : "%joueurActuel)
        if not choixJoueur.isdigit() :
            print "Un chiffre svp ..."
            choixJoueur = 0        
        elif choixJoueur.isdigit() and int(choixJoueur) not in choixValides :
            print "Choix invalide !... "
            choixJoueur = 0

    #on vérifie si le joueur à gagné sinon la main passe
    nbrCailloux -= int(choixJoueur)
    if nbrCailloux == 0:
        partieTerminee = True
    else :
        if joueurActuel == JOUEUR1:
            joueurActuel = JOUEUR2
        else:
            joueurActuel = JOUEUR1    

print "Félicitation %s, vous avez gagné !!!"%joueurActuel
Messages postés
3
Date d'inscription
jeudi 22 janvier 2015
Statut
Membre
Dernière intervention
22 janvier 2015

Voilà mon début de programme :
def joue(l,c):
    if len(l) == 3 : 
        if c%3!=0:
            return(c%3)
        else :
            return(1)
    elif len(l)==8:
        if c%4!=0:
            return(c%4)
        else:
            return(1) 


Et ma question et quel suite de programme pourrait je faire pour gagner pour les 2 derniers liste ?
Merci
Messages postés
14464
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 juillet 2020
420
J'ai donc mis la coloration que je t'avais demandée....
Messages postés
3
Date d'inscription
jeudi 22 janvier 2015
Statut
Membre
Dernière intervention
22 janvier 2015

Merci