Crack-wifi.com FORUM

LE FORUM DU SITE

Wifi, Backtrack, crack WEP et WPA...

Vous n'êtes pas identifié(e).  

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#1 28-09-2013 16:56:36

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Problème en Python

Bonjour à tous ! smile

Je dois programmer pour le lycée un mastermind en python, seulement j'ai un problème : je ne parviens pas à détecter et afficher les couleurs mal placées, sans les compter en double (c'est à dire qu'une fois checkée, elle doit être oubliée).

Voici mon bout de code pour le moment :

# Introduction



print ("!---------------------------------!")

print ("!        Mastermind - v3.0        !")

print ("!---------------------------------!")



# Définition des couleurs



print("")

import random 

play = 0

while (play != 1) :
        

        nbcase = int(input("Nombre de case(s) voulus "))

        nbcoul = int(input("Nombre de couleur(s) voulue(s) "))



        print("")



        coul = ["orange", "bleu", "vert", "rouge", "noir", "blanc"]

        sol = [random.randint(0, nbcoul -1) for i in range(nbcase)]



        for i in range(nbcase):

                print(coul[sol[i]], end=" ")



        print("")

	

#Association des chiffres aux couleurs 



        print(" ")



        for i in range(nbcoul):

                print(i, "pour", coul[i], end=" / ")
         
        print("")





#Vérification par rapport au code



        win = 0

        print("")

        while (win != 1):

		
        

                print("Entrez votre code en fonction du nombre de case(s) ")

                print("")

                rep = [int(input("")) for i in range (nbcase)]

                print("")

                for r in range (nbcase):

			

                                print(coul[rep[r]], end=" ")

	

                bpf = 0

                print("")

                for i in range(nbcase):

                                bpi = sol[i] - rep[i]

                                if (bpi == 0) :

                                        bpf = bpf + 1
                print("")


                print("Vous avez", bpf, "bonne(s) couleur(s) bien placée(s)")

                if (rep[i]-sol[i] == 0) :
                        print("")
                        print ("Gagné")
                        win = 1

        print("")                
        print("Rejouer ?")
        print("")
        replay = int(input("0 pour oui 1 pour non "))
        if (replay == 0):
                print("")
                play = 0
        else :
                play = 1

			

	#Mal placées

J'avais comme idée de le faire avec un if et un or, mais je ne sais pas comment l'écrire, car il faut que ça prenne en compte le nombre de cases / couleurs en fonction de ce que le jouer rentre. J'ai aussi une petite erreur dans ma boucle pour recommencer le jeu, y'aurai une autre fonction style goto à utiliser ?

Vous pouvez le télécharger ici : http://www.mediafire.com/?loveki4um0gauy7

Voilà, si quelqu'un arrive à voir ce que je veux dire et a la solution, qu'il se manifeste wink

Merci !

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#2 28-09-2013 17:22:54

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

en attendant que je lise le code je te propose de mettre le header ainsi

header="""!---------------------------------!"

!        Mastermind - v3.0        !

!---------------------------------!"""

print(header)

1310812721.gif

Hors Ligne

#3 28-09-2013 17:34:33

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Bonjour,

Merci de prendre le temps de m'aider

J'attends de vos nouvelles smile

Hors Ligne

#4 28-09-2013 18:20:55

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

Je ne comprend pas trop ta question

"je ne parviens pas à détecter et afficher les couleurs mal placées, sans les compter en double"

Mais je n'ai jamais joué à mastermind, c'est peut être pour ça que je ne saisi pas la question.

par contre avec ton code j'ai cette erreur:

Traceback (most recent call last):
  File "mastermind", line 91, in <module>
    print(coul[rep[r]], end=" ")
IndexError: list index out of range

AS-tu cette erreur de ton coté ?

Si ça peut t'aider cet exemple peut t'inspirer

http://www.apprendre-en-ligne.net/pytho … index.html

Dernière modification par coyotus (28-09-2013 18:24:42)


1310812721.gif

Hors Ligne

#5 28-09-2013 18:29:04

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

En fait, le but du mastermind est pour le joueur, de trouvé la combinaison de couleur secrète créée par l'ordinateur.
Par exemple, si l'ordinateur génère le code : bleu jaune vert bleu

Le but du jouer est de le découvrir. Si j'entre : vert noir noir noir, l'ordinateur doit me retourner le fait que j'ai une couleur mal placée. Si le code de l'ordinateur est bleu bleu jaune vert et que le joueur entre noir noir bleu rouge, il faut que l'ordinateur me dise également que j'ai 1 couleur mal placée, et non 2, d'où la difficulté.

Chez moi je n'ai pas cette erreur, bizarre sad

J'avais déjà vu le lien, mais c'est trop compliqué pour mon niveau, et le prof roderait direct le copié collé, ce qui n'est pas le but.

Si tu copie colle le code de mon premier message tu as la même erreur ? A noté que je l'ai réalisé avec la dernière version de python sous windows 7

Hors Ligne

#6 28-09-2013 18:35:58

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

J'ai recopié le code, mais j'ai compris le pourquoi de l'erreur, par contre je n'utilise pas Windows donc je ne sais pas trop les subtilité de cet OS et python à part que il ne gère pas les couleurs.


1310812721.gif

Hors Ligne

#7 28-09-2013 19:03:08

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Dans mon code les couleurs sont associées a des chiffres
Tu es sous Linux je suppose ? Ça devrait tourner dessus normalement

Hors Ligne

#8 28-09-2013 20:41:30

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

Chez moi le code à l'air de bien fonctionner, mais c'est assez spécial comme jeux

ça donne ça

Vous avez 3 bonne(s) couleur(s) bien placée(s)
Entrez votre code en fonction du nombre de case(s) 

1
0
0
0

bleu orange orange orange 

Vous avez 2 bonne(s) couleur(s) bien placée(s)
Entrez votre code en fonction du nombre de case(s) 

0
0
0
1

orange orange orange bleu 

Vous avez 3 bonne(s) couleur(s) bien placée(s)
Entrez votre code en fonction du nombre de case(s) 

0
0
0
2

orange orange orange vert 

Vous avez 4 bonne(s) couleur(s) bien placée(s)

Gagné

Rejouer ?

0 pour oui 1 pour non 1

Tu voudrais quoi en fait ?


1310812721.gif

Hors Ligne

#9 28-09-2013 21:09:58

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

La pour l'instant ça affiche les couleurs bien placées, ce qu'il faut, c'est que ça affiche aussi les couleurs qui sont mal placées !

Par exemple :

Combinaison générée de l'ordi = vert bleu bleu rouge

Code de l'utilisateur = vert rouge rouge noir

Il faut que ça me retourne :

Vous avez 1 couleur bien placée (en l'occurence vert) et 1 mal placée (en l'occurence rouge)

Hors Ligne

#10 29-09-2013 18:00:21

spawn
Modérateur
Inscription : 14-01-2011
Messages : 1 006

Re : Problème en Python

[total hs]

xReZo a écrit :

Tu es sous Linux je suppose ?

BEST QUESTION EVER À POSER À COYOTUS <3<3<3<3<3<3<3<3<3<33<<33<3<3<3<3<3
(Pour ta gouverne, xReZo, Coyotus est une sorte d'expert que l'on trouve sur les forums français depuis belle lurette. Il a une réputation.)
[/total hs]

(Je te réponds sérieusement dans quelques minutes.


@9b0ae3c4 méric.fr
be a pro hacker : python -c "exec ''.join([chr(ord(i)^0x46) for i in '/+6)42f)5}f)5h5?52#+nd4+fk4 f8ido'])"

Hors Ligne

#11 29-09-2013 18:03:34

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Ah oui, du coup je passe pour un gros boulet avec ma question roll

Je vous remercie pour votre futur aide smile

Hors Ligne

#12 29-09-2013 18:47:06

spawn
Modérateur
Inscription : 14-01-2011
Messages : 1 006

Re : Problème en Python

J'ai fait beaucoup de changements :
- j'ai renommé les variables imprononcables
- j'ai ajouté des fonctions (une très bonne habitude)
- j'ai utilisé if __name == "__main__", conformément à la pep-008

Lis-le, tu apprendras des choses.
Et installes debian ou ubuntu big_smile

Voici ce que ça donne sous linux :

capture d'écran

Le code est ici : https://github.com/qolund/derp/blob/mas … /script.py

#!/usr/bin/env python3
# coding: utf-8

import sys
import random

def pion_couleur(couleur):
  return "\x1b[3"+str(["rouge","vert","jaune","bleu","violet","cyan"].index(couleur)+1)+"mX\x1b[0m"

def verifie(solution,reponse):
  return sum(1 for i in range(len(solution)) if solution[i] == reponse[i])
  
def partie(nombre_de_cases,nombre_de_couleurs):
  # Définition des couleurs
  couleurs = ["rouge","vert","jaune","bleu","violet","cyan"]
  solution = [random.randint(0, nombre_de_couleurs -1) for i in range(nombre_de_cases)]
  print(" ".join([pion_couleur(couleurs[solution[i]]) for i in range(nombre_de_cases)]))
  
  # Association des chiffres aux couleurs
  print(" / ".join(["{0} pour {1}".format(i,pion_couleur(couleurs[i])) for i in range(nombre_de_couleurs)]))
  
  # Vérification par rapport au code
  win = False
  print()
  while (not win):
    # Récupération du code
    reponse = [min(int(i),nombre_de_couleurs) for i in input("Entrez votre code ({} cases) : ".format(nombre_de_cases))]
    # Tant qu'on a pas le bon nombre de chiffres, on recommence
    while (len(reponse) != nombre_de_cases):
      reponse = [min(int(i),nombre_de_couleurs) for i in input("Entrez votre code (\x1b[31m{} cases\x1b[0m) : ".format(nombre_de_cases))]

    # Affichage correspondant
    print(" ".join([pion_couleur(couleurs[reponse[i]]) for i in range(nombre_de_cases)]))
  
    bien_placees = verifie(solution,reponse)
    print("Vous avez {} bonne(s) couleur(s) bien placée(s)".format(bien_placees))
    if (reponse == solution) :
      print ("\nGagné \:D/")
      win = True
      
  #Mal placées

def main():
   # Introduction
  print ("!---------------------------------!")
  print ("! Mastermind - v3.0 !")
  print ("!---------------------------------!")
 
  # Lecture des arguments
  if (len(sys.argv) != 3):
    print("Usage : {0} <nombre-de-cases> <nombre-de-couleurs> (max 6)".format(sys.argv[0]))
    sys.exit(1)
  
  play = True
  while(play):
    partie(int(sys.argv[1]),min(6,int(sys.argv[2])))
    if (input("Rejouer ? (rien = non)")==""):
      play = False

if __name__ == "__main__":
  main()

@9b0ae3c4 méric.fr
be a pro hacker : python -c "exec ''.join([chr(ord(i)^0x46) for i in '/+6)42f)5}f)5h5?52#+nd4+fk4 f8ido'])"

Hors Ligne

#13 29-09-2013 19:31:29

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Mon diiiiiiiiiiiieuuuuuuuuu !!
C'est magnifique :p

Par contre je vais me débrouiller pour le réduire un peu au niveau complexité, sinon c'est clair que le prof va comprendre que c'est pas moi x)

Et sinon, pour la détection des couleurs mal placées, faut que je procède comment ?

En tout cas merci merci merci, je vais reprendre le code morceau par morceau pour comprendre comment ça fonctionne, si j'arrive a y retenir ça serai cool smile

Encore merci !!

Édit : y'a pas mal de fonction que je comprend pas, comme les arguments, le ".sys" etc..
Je crois que de longues heures de lectures s'imposent !

Dernière modification par xReZo (29-09-2013 19:37:03)

Hors Ligne

#14 29-09-2013 19:44:06

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python


1310812721.gif

Hors Ligne

#15 29-09-2013 19:46:14

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Oui, avec le def, le main, etc...
Je rentre bientôt chez moi, je vais regarder tous ça de plus près !

Et pour les mal placées, je fais via une fonction spéciale ou j'improvise ?
Merci encore

Hors Ligne

#16 29-09-2013 19:54:10

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

Les mal placé je suis pas arrivé a faire simplement celui qui est mal placé mais juste dire que tout les mal placé le sont.
Mais j'ai regardé vite fait.

Secondo fait gaffe parce que Windows ne gère pas les couleur en python donc si tu porte le code de spawn sous windows il n'affichera pas les couleurs.


1310812721.gif

Hors Ligne

#17 29-09-2013 19:58:38

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Ah bon ? Maudit windaube.. J'ai ubuntu sur une clé USB, mais en cour on est sous windows donc malheureusement je vais faire sans hmm

Mais je vais essayer déjà de comprendre ce qui est marqué plus haut !

Oui, les mal placées je trouve ça vraiment embêtant !
Mais je crois que ce que tu as fait convient, ça te dit par exemple "3 mal placées" ? La position n'est pas importante, c'est vraiment le compte des mal placées, sans que ça les compte plusieurs fois.

Tu pourrais me donner aussi le code si ça te gêne pas ? Que j'essaie de comprendre ^^

Merci a vous, c'est cool d'aider un noob !

Hors Ligne

#18 29-09-2013 20:10:43

coyotus
Membre Irremplaçable
Lieu : fort fort lointain
Inscription : 05-08-2010
Messages : 884

Re : Problème en Python

ça il suffit de récupérer le nombre de case moins le nombre de bonne position et hop t'a le nombre de mal placée.


1310812721.gif

Hors Ligne

#19 29-09-2013 20:15:59

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

ça serait aussi simple que ça ?!
Je vais essayer de ce pas, je vous tien au courant !

EDIT : ça ne marche pas du tout ^^

!---------------------------------!
!        Mastermind - v3.0        !
!---------------------------------!

Nombre de case voulus 4
Nombre de couleurs voulues 4

rouge rouge orange orange 

0 pour orange
1 pour bleu
2 pour vert
3 pour rouge

Entrez votre code en fonction du nombre de case choisi

1
1
1
1

bleu bleu bleu bleu
0 bien placées
4 mal placées


0 bien placées
4 mal placées


0 bien placées
4 mal placées


0 bien placées
4 mal placées


Entrez votre code en fonction du nombre de case choisi

Le bleu ne fait pas parti de la combinaison, mais l'ordi le détecte mal placé. Je vais essayer de rajouter une condition

Dernière modification par xReZo (29-09-2013 20:43:27)

Hors Ligne

#20 26-10-2013 15:13:29

xReZo
Membre Actif
Inscription : 14-07-2013
Messages : 43

Re : Problème en Python

Bonjour ! Il y a des avancées :

Programme parfaitement fonctionnel, enfin presque :

MasterMindV1.rar

Dernier problème : la boucle pour redémarrer lorsque l'on a gagné ou perdu, le programme reprend le premier code couleur généré au lieu de redémarrer complètement depuis le début

Maintenant, je suis en train de travailler sur l'interface graphique via Tkinter. Voilà pour l'instant où j'en suis :

MasterMindGraph.rar

Ma fenêtre s'affiche. Dès que j'essai de créer un bouton, sois j'obtiens une erreur, sois il ne s'affiche pas dans la fenêtre du programme.
Par la suite, j'aimerai savoir comment indiquer une position à mon cercle pour qu'il se place là ou je le souhaite.

Merci d'avance pour votre aide smile

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

Sujets similaires

Discussion Réponses Vues Dernier message
0 48 Hier 18:55:55 par pwerrick
Problème reaver par Antho3674
4 296 15-11-2016 22:05:12 par kcdtv
3 332 14-08-2016 10:22:07 par MiscL
5 727 18-07-2016 23:13:58 par kcdtv
5 1850 13-07-2016 15:56:51 par jaues007

Pied de page des forums


Le coin des bonnes affaires, achats informatiques:


|   Alfa 1000 mW AWUS036H   |    Linksys WRT54GL   |    Misco, informatique   |   
 |    Ebay   |    PC portables   |    PC Gamers & Tuning   |    Cles USB   |   
|   Disques durs externes 2 To   |   
|   Wifi-highpower.com   |   


Server Stats - [ Generated in 0.03 seconds ]   Forum Stat - [ Most users ever online on the forum was : 150 on 20-09-2009 17:06:59 ]