Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet python

Jeu du Risk

    5 avril 2015 à 18:21:31

    Bonjour, nous sommes sur la réalisation d'un projet informatique sur le jeu du risk, si vous ne connaissez pas le principe c'est qu'il y a un attaquant et un defenseur, l'attaquant peut jeter Min{n,3} dés n étant le nombre d'armees qu'il possede. Le defenseur peut jeter Min{p,2} dés p etant le nombre d'armées qu'il possede. Le plus grand nombre obtenue par 1 des dés de l'attaquant se defie avec le plus grande nombre obtenue par 1 des dés du defenseur, le perdant perd une armee et meme chose pour le second dés de plus grand nombre. Si il y a égalite le defenseur gagne. Le but du projet est de faire cela jusqu'a epuisement des armées et de le faire avec un tres grand nombre d'armées differentes(n=30,p=30) et d'en etudier les probabilités. Nous sommes coincés avant d'arriver sur la partie probabilité dans l'algorithme que l'on fait sur komodo :

    import random
    def des_attaquant(n):
        L=[]
        if n-3>=0:
            d1=random.randint(1,6)
            d2=random.randint(1,6)
            d3=random.randint(1,6)
            L=[d1,d2,d3]
            L.sort()
        elif n==2:
            d1=random.randint(1,6)
            d2=random.randint(1,6)
            L=[d1,d2]
            L.sort()
        elif n==1:
            d1==random.randint(1,6)
            L=[d1]
            L.sort()
        return[L]   


    def des_defenseur(p):
        l=[]
        if p-2>=0:
            d1=random.randint(1,6)
            d2=random.randint(1,6)
            l=[d1,d2]
            l.sort()
        else:
            d1=random.randint(1,6)
            l=[d1]
            l.sort()
        return(l)

    def attaquant_gagne():
        while n!=0 and p!=0:
            for i in range(1,2):
                if x[(len(x)-i)]>y[(len(y)-i)]:
                    return(False)
                elif x[(len(x)-i)]<y[(len(y)-i)]:
                    return(True)
                else:
                    return(False)
           
           
    ######################################################################################       
    n=int(input("nombre d'armee de d?part de l'attaquant est "))
    p=int(input("nombre d'armee de d?part du defenseur est "))
    y=des_attaquant(n)
    x=des_defenseur(p)
    print(x)
    print(y)
    a=attaquant_gagne(x,y)

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2015 à 19:01:09

      Quelle est la question ?

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        5 avril 2015 à 21:00:00

        j'avais un probleme par rapport a ma condition if dans ma derniere fonction, bref j'ai reussi a me debrouiller et j'ai retourner les listes de dés pour que la plus grande valeur soit afficher en premiere mais maintenant j'essaye de mettre une boucle while dans attaquant_gagne que j'ai changé en procédure pour arriver jusqu'a temps que n=0 et p=0, maintenant je dois faire la probabilité de gagner en testant avec beaucoup de nombre d'armée mais je vois pas comment faire si vous pouvez m'aider ?

        def attaquant_gagne(x,y,n,p):
                while n!=0 and p!=0:
                    y=des_attaquant(n)
                    x=des_defenseur(p)
                    nbdedes=min(n,p,2)
                    for i in range(nbdedes):
                        if x[i]<y[i]:
                            p-=1
                        else:
                            n-=1
                print(n)
                print(p)
        • Partager sur Facebook
        • Partager sur Twitter

        Projet python

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown