Advertisement
Guest User

Untitled

a guest
Feb 16th, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.45 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Permet d'initialiser une matrice qui contiendra les coordonnées des points ainsi que les pions des joueurs
  4.  
  5. def creer_matrice(grille):
  6.     # On crée une matrice qui contient 10 lignes
  7.     matrice = [None] * 10
  8.  
  9.     # On rajoute 10 colonnes remplies de "0" à chaque ligne de la matrice
  10.     for ligne in range(10):
  11.         matrice[ligne] = [0] * 10
  12.  
  13.     # Le premier élément de la matrice doit être vide
  14.     matrice[0][0] = '  '
  15.  
  16.     # On rajoute les coordonées de la matrice
  17.     matrice = ajouter_coordonnees(matrice)
  18.  
  19.     # On rajoute les bordures de la matrice
  20.     matrice = ajouter_bordures(matrice)
  21.  
  22.     # On rajoute les pions au sein de la matrice
  23.     matrice = ajouter_pions(grille, matrice)
  24.  
  25.     return matrice
  26.  
  27.  
  28. # Permet d'ajouter les coordonnées à la matrice que l'on a crée
  29. def ajouter_coordonnees(matrice):
  30.     # On initialise caractere = 65, ce qui correspond au code unicode de la lettre 'A' des coordonnées
  31.     caractere = 65
  32.  
  33.     # On initialise compteur = 1, ce qui correspond au chiffre 1 des coordonnées
  34.     compteur = 1
  35.  
  36.     for i in range(1, 10):
  37.         # On ajoute chr(caractere) et compteur aux coordonnées puis on les incrémente
  38.         if (i % 2 == 0):
  39.             matrice[0][i] = ' ' + str(compteur) + ' '
  40.             matrice[i][0] = chr(caractere)
  41.             caractere += 1
  42.             compteur += 1
  43.         # On ajoute des espaces vides entre deux coordonnées
  44.         else:
  45.             matrice[0][i] = ' '
  46.             matrice[i][0] = ' '
  47.  
  48.     return matrice
  49.  
  50.  
  51. # Permet d'ajouter les bordures de la matrice que l'on a crée, c'est à dire les chaines de caractères '--' et ' | '
  52. def ajouter_bordures(matrice):
  53.     # Nombres de lignes et de colonnes de la matrice (10)
  54.     nb_lignes = len(matrice)
  55.     nb_colonnes = len(matrice[0])
  56.  
  57.     # Ajout des bordures à la matrice
  58.     ligne = 1
  59.     while (ligne < nb_lignes):
  60.         colonne = 1
  61.         # Chaque "--" est ajouté pour un numéro de ligne impair, chaque " | " est ajouté pour un numéro de ligne pair et un numéro de colonne impair
  62.         while (colonne < nb_colonnes):
  63.             if (ligne % 2 != 0):
  64.                 matrice[ligne][colonne] = "--"
  65.             if (ligne % 2 == 0 and colonne % 2 != 0):
  66.                 matrice[ligne][colonne] = " | "
  67.             colonne += 1
  68.         ligne += 1
  69.  
  70.     return matrice
  71.  
  72.  
  73. # Permet d'ajouter les pions de la grille choisie à la matrice que l'on a crée.
  74. def ajouter_pions(grille, matrice):
  75.     # Nombres de lignes et de colonnes de la matrice (10)
  76.     nb_lignes = len(grille)
  77.     nb_colonnes = len(grille[0])
  78.  
  79.     # On ajoute les pions à la matrice en faisant une translation de (x+1)*2 entre la grille et la matrice, car la matrice n'est pas de même longueur que la grille.
  80.     for ligne in range(nb_lignes):
  81.         for colonne in range(nb_colonnes):
  82.             matrice[(ligne + 1) * 2][(colonne + 1) * 2] = grille[ligne][colonne]
  83.  
  84.     return matrice
  85.  
  86.  
  87. # Permet d'afficher la matrice que l'on a crée, après y avoir ajouté les coordonnées, les bordures, et les pions de la grille choisie
  88. def afficher_grille(matrice):
  89.     # nombre de lignes et de colonnes de la matrice (10)
  90.     nb_lignes = len(matrice)
  91.     nb_colonnes = len(matrice[0])
  92.  
  93.     # On affiche chaque élément de la matrice un par un, puis on effectue un retour à la ligne lorsque l'on a parcouru toutes les colonnes d'une ligne.
  94.     for ligne in range(nb_lignes):
  95.         for colonne in range(nb_colonnes):
  96.             print(matrice[ligne][colonne], end="")
  97.         print()
  98.  
  99.  
  100. # Permet à l'utilisateur de saisir les coordonnées qu'il souhaite, en retournant ensuite la ligne et la colonne qu'il a saisi
  101. def saisir_coordonnees():
  102.     print("\n Ligne : ")
  103.     # Saisie de la ligne
  104.     ligne = input()
  105.     print(" \n Colonne : ")
  106.     # Saisie de la colonne
  107.     colonne = int(input())
  108.  
  109.     return ligne, colonne
  110.  
  111.  
  112. # Fonction de test de la fonction est_dans_grille
  113. def test_est_dans_grille(matrice):
  114.     assert est_dans_grille(matrice, 'A', 1) == True, "Erreur 1"
  115.  
  116.     assert est_dans_grille(matrice, 'A', 4) == True, "Erreur 2"
  117.  
  118.     assert est_dans_grille(matrice, 'D', 4) == True, "Erreur 3"
  119.  
  120.     assert est_dans_grille(matrice, 'B', 1) == True, "Erreur 4"
  121.  
  122.     assert est_dans_grille(matrice, 'A', 9) == False, "Erreur 5"
  123.  
  124.     assert est_dans_grille(matrice, 'X', 4) == False, "Erreur 6"
  125.  
  126.  
  127. # Permet de vérifier si les coordonnées précédemment saisies par l'utilisateur sont bien valides ou non et retournant un booléen : True ou False
  128. def est_dans_grille(matrice, ligne, colonne):
  129.     # Permet de vérifier si la ligne saisie se situe bien entre "A" et "D" dans l'ordre alphabétique, et que la colonne saisie se situe bien entre 1 et 10
  130.     # On vérifie la condition : 1 <= 2 * colonne < len(matrice)) car la longueur de la matrice = 2 fois le nombre de colonnes + 2 (qui représente les bordures de début et de fin de matrice, on n'en tient pas compte car les coordonnées sont invalides à cette position)
  131.     if (ord("A") <= ord(ligne) <= ord("D") and 1 <= 2 * colonne < len(matrice)):
  132.         return True
  133.     elif (ord("a") <= ord(ligne) <= ord("d") and 1 <= 2 * colonne < len(matrice)):
  134.         return True
  135.     else:
  136.         return False
  137.  
  138.  
  139. # Permet d'afficher si les coordonnées sont valides ou non, et de les re-saisir au besoin, d'après la fonction est_dans_grille, avec valide = est_dans_grille(matrice, ligne, colonne)
  140. def affichage_validite(valide, matrice):
  141.     while (not valide):
  142.         print("\n Coordonnées non valides")
  143.         ligne, colonne = saisir_coordonnees()
  144.         valide = est_dans_grille(matrice, ligne, colonne)
  145.     print("\n Coordonnées valides")
  146.  
  147.  
  148. grille_1 = [
  149.     ["O", "O", "O", "O"],
  150.     ["O", "O", "O", "O"],
  151.     ["X", "X", "X", "X"],
  152.     ["X", "X", "X", "X"],
  153. ]
  154. grille_2 = [
  155.     ["O", " ", "O", "O"],
  156.     ["O", "O", " ", "O"],
  157.     [" ", " ", "X", "X"],
  158.     ["X", "X", " ", "X"],
  159. ]
  160. grille_3 = [
  161.     [" ", "O", "O", " "],
  162.     ["O", " ", "O", " "],
  163.     ["O", " ", " ", " "],
  164.     ["X", " ", " ", " "],
  165. ]
  166.  
  167. matrice1 = creer_matrice(grille_1)
  168. matrice2 = creer_matrice(grille_2)
  169. matrice3 = creer_matrice(grille_3)
  170.  
  171. print("\n Début de partie :")
  172. afficher_grille(matrice1)
  173. print(" \n Milieu de partie :")
  174. afficher_grille(matrice2)
  175. print("\n Fin de partie :")
  176. afficher_grille(matrice3)
  177. test_est_dans_grille(matrice1)
  178. ligne, colonne = saisir_coordonnees()
  179. valide = est_dans_grille(matrice1, ligne, colonne)
  180. affichage_validite(valide, matrice1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement