Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Taquin en Python

Posté par
nirosane
12-01-18 à 20:38

Bonjour pourriez vous m'aider avec ce programme en Python, j'ai un problème pour mélanger les éléments de mon tableau. Il faut que je met en place en fonction qui joue 100 coups à partir du 0 de façon à mélanger aléatoirement le tabeau..Le  problème est que je ne sais pas comment faire.


from tkinter import*
grille=[]
ligne=3
col=3
value = -1
for line in range (ligne) :
    grille.append([])
    for colonne in range(col) :
        value += 1
        grille[line].append(value)
        
for element in grille :
    print(element)

def melange(element) :

(j 'ai envie d'uliser shuffle mais ça ne marche pas et si ça marchais cela n'aurait mélanger qu'une fois)
D'autre part :

Si vous pouviez m'expliquer comment créer une fonction qui permette de jouer des coups c'est à dire une fonction qui intervertis les places des numéros qui entoure le 0.
Par exemple :
[0 , 7, 8]
[5,2, 3]
[1,4,6]
Entrer un nombre : 5
[5,7,8]
[0,2, 3]
[1,4,6]

Et si jamais le chiffre n'est pas à coter du 0 c'est à si on aurait par exemple choisi 4 comme nombre aurait renvoyer coup invalide.

Posté par
bbomaths
re : Taquin en Python 13-01-18 à 07:11

Bonjour.

Un exemple :


#*******************************************************************************
# IMPORT ***********************************************************************
#*******************************************************************************

# module de generation de nombres aleatoires
import random

#*******************************************************************************
# DEF **************************************************************************
#*******************************************************************************

# -- afficher_taquin ----------------------------------------------------------
#
# Description  : affichage du Taquin
#
# Parameters   :
#
# Return       :
#
# Notes        :
#                   --- --- ---
#                  | 0 | 1 | 2 |
#                   --- --- ---
#                  | 3 | 4 | 5 |
#                   --- --- ---
#                  | 6 | 7 | 8 |
#                   --- --- ---
#
def afficher_taquin() :

   print "   --- --- ---"
   print "  |", l_case[0], "|", l_case[1], "|", l_case[2], "|"
   print "   --- --- ---"
   print "  |", l_case[3], "|", l_case[4], "|", l_case[5], "|"
   print "   --- --- ---"
   print "  |", l_case[6], "|", l_case[7], "|", l_case[8], "|"
   print "   --- --- ---"
   print " "

# -- echanger_cases ----------------------------------------------------------
#
# Description  : echange de 2 cases
#
# Parameters   :
#
# Return       :
#
# Notes        : aucunes cases echangées si pas possible
#
def echanger_cases(case1, case2) :

   # echanges horizontaux

   # 0 <-> 1 ?
   if (case1 == 0 and case2 == 1) or (case1 == 1 and case2 == 0) :

      l_case[0], l_case[1] = l_case[1], l_case[0]

   # 1 <-> 2 ?
   elif (case1 == 1 and case2 == 2) or (case1 == 2 and case2 == 1) :

      l_case[1], l_case[2] = l_case[2], l_case[1]

   # 3 <-> 4 ?
   elif (case1 == 3 and case2 == 4) or (case1 == 4 and case2 == 3) :

      l_case[3], l_case[4] = l_case[4], l_case[3]

   # 4 <-> 5 ?
   elif (case1 == 4 and case2 == 5) or (case1 == 5 and case2 == 4) :

      l_case[4], l_case[5] = l_case[5], l_case[4]

   # 6 <-> 7 ?
   elif (case1 == 6 and case2 == 7) or (case1 == 7 and case2 == 6) :

      l_case[6], l_case[7] = l_case[7], l_case[6]

   # 7 <-> 8
   elif (case1 == 7 and case2 == 8) or (case1 == 8 and case2 == 7) :

      l_case[7], l_case[8] = l_case[8], l_case[7]

   # echanges verticaux

   # 0 <-> 3 ?
   elif (case1 == 0 and case2 == 3) or (case1 == 3 and case2 == 0) :

      l_case[0], l_case[3] = l_case[3], l_case[0]

   # 3 <-> 6 ?
   elif (case1 == 3 and case2 == 6) or (case1 == 6 and case2 == 3) :

      l_case[3], l_case[6] = l_case[6], l_case[3]

   # 1 <-> 4 ?
   elif (case1 == 1 and case2 == 4) or (case1 == 4 and case2 == 1) :

      l_case[1], l_case[4] = l_case[4], l_case[1]

   # 4 <-> 7 ?
   elif (case1 == 4 and case2 == 7) or (case1 == 7 and case2 == 4) :

      l_case[4], l_case[7] = l_case[7], l_case[4]

   # 2 <-> 5 ?
   elif (case1 == 2 and case2 == 5) or (case1 == 5 and case2 == 2) :

      l_case[2], l_case[5] = l_case[5], l_case[2]

   # 5 <-> 8
   elif (case1 == 5 and case2 == 8) or (case1 == 8 and case2 == 5) :

      l_case[5], l_case[8] = l_case[8], l_case[5]

#*******************************************************************************
# MAIN *************************************************************************
#*******************************************************************************

# initialisation du Taquin ----------------------------------------------------

# liste vide par defaut
l_case = []

i = 0

while i < 9 :

   # chiffre aleatoire de 0 a 8
   chiffre = random.randrange(0, 9)

   # deja eu ?
   if chiffre not in l_case :

      # non : on le garde
      l_case.append(chiffre)

      i += 1

# jeu -------------------------------------------------------------------------

while (True) :

   # affichage du Taquin
   afficher_taquin()

   # saisie
   numero = int(input(" Entrez le numero de la piece a bouger de 1 a 8 : "))

   # numero valide ?
   if 1 <= numero and numero <= 8 :

      # oui : recherche de la case contenant le zero
      case_zero = l_case.index(0)

      # recherche de la case contenant le numero
      case_numero = l_case.index(numero)

      # echange (si possible)
      echanger_cases(case_zero, case_numero)


Exécution :

   --- --- ---
  | 7 | 2 | 3 |
   --- --- ---
  | 4 | 6 | 5 |
   --- --- ---
  | 8 | 0 | 1 |
   --- --- ---

 Entrez le numero de la piece a bouger de 1 a 8 : 6
   --- --- ---
  | 7 | 2 | 3 |
   --- --- ---
  | 4 | 0 | 5 |
   --- --- ---
  | 8 | 6 | 1 |
   --- --- ---

 Entrez le numero de la piece a bouger de 1 a 8 : 4
   --- --- ---
  | 7 | 2 | 3 |
   --- --- ---
  | 0 | 4 | 5 |
   --- --- ---
  | 8 | 6 | 1 |
   --- --- ---

 Entrez le numero de la piece a bouger de 1 a 8 :


A modifier à volonté...

Posté par
bbomaths
re : Taquin en Python 13-01-18 à 08:02

Remarque : pour du Python 3.x :


# -- afficher_taquin ----------------------------------------------------------
#
# Description  : affichage du Taquin
#
# Parameters   :
#
# Return       :
#
# Notes        : pour Python 3.x
#
#                   --- --- ---
#                  | 0 | 1 | 2 |
#                   --- --- ---
#                  | 3 | 4 | 5 |
#                   --- --- ---
#                  | 6 | 7 | 8 |
#                   --- --- ---
#
def afficher_taquin() :

   print("   --- --- ---")
   print("  |", l_case[0], "|", l_case[1], "|", l_case[2], "|")
   print("   --- --- ---")
   print("  |", l_case[3], "|", l_case[4], "|", l_case[5], "|")
   print("   --- --- ---")
   print("  |", l_case[6], "|", l_case[7], "|", l_case[8], "|")
   print("   --- --- ---")
   print(" ")

Posté par
nirosane
re : Taquin en Python 22-01-18 à 23:37

Merci beaucoup  pour ce programme.

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !