Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1.  
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. import random
  5. import matplotlib.animation as animation
  6. import pickle
  7. import os
  8. import re
  9. #================================================ Génération grille aléatoire jeu de la vie ========================================================#
  10. width, height = 100, 100
  11. mort = 0
  12. vie = 1
  13.  
  14.  
  15. grilletemps = np.zeros((height, width), dtype=int)
  16.  
  17. grille = np.random.randint(0, 2, (100, 100))
  18.  
  19.  
  20. def update(i):
  21. reglesGameOfLife(grille)
  22. matrice.set_array(grille)
  23. return matrice,
  24.  
  25.  
  26. def reglesGameOfLife(grille):
  27. grilletemps = grille.copy()
  28. for i in range(1, width-1):
  29. for j in range(1, height-1):
  30. total = grille[i, j-1] + grille[i, j+1] + grille[i-1, j] + grille[i+1, j] + \
  31. grille[i-1, j-1] + grille[i-1, j+1] + \
  32. grille[i+1, j-1] + grille[i+1, j+1]
  33. if(grille[i][j] == vie):
  34. if(total < 2):
  35. grilletemps[i][j] = 0
  36. if(total == 3 or total == 2):
  37. grilletemps[i][j] = 1
  38. if(total > 3):
  39. grilletemps[i][j] = 0
  40. else:
  41. if(total == 3):
  42. grilletemps[i][j] = 1
  43. grille[:] = grilletemps[:]
  44.  
  45.  
  46. fig, ax = plt.subplots()
  47. matrice = ax.imshow(grille)
  48. print(grille)
  49.  
  50. ani = animation.FuncAnimation(fig, update, frames=19, interval=50)
  51.  
  52.  
  53. plt.show()
  54.  
  55. # ====================================== Parser fichier RLE ========================================
  56.  
  57. # Vérification de la présence d'un fichier de stockage.
  58. try:
  59. with open("stockage.txt", 'rb') as file:
  60. DicoPattern = pickle.load(file)
  61. except:
  62. DicoPattern = {}
  63.  
  64. # Parcourt du dossier
  65. # parcourt de tous les fichiers présents dans le dossiers "fichiers" qui stock les pattern
  66. for fichiers in os.listdir('./fichiers'):
  67.  
  68. # test avec print(fichiers) pour vérifier que l'on récupère bien tous les fichiers
  69.  
  70. # ici, on fais le tri entre les fichier avec l'extension .rle qui nous intéresse
  71. if(fichiers[-4:] == ".rle"):
  72. recuperationContenu = open("./fichiers/" + fichiers, "r")
  73. contenuFichier = recuperationContenu.read()
  74. print('a')
  75.  
  76. # test avec print(contenuFichier) pour vérifier que l'on récupère le contenu des fichier RLE
  77.  
  78. reTailleGrille = r"x\s=\s\d{1,},\sy\s=\s\d{1,}"
  79. reCellulesGrille = r"\s{0,}[bo\d$]{1,}\s{0,}[bo\d$]{1,}!$"
  80.  
  81. # Récupération des informations dans les fichiers, parsing de la chaine de caractères
  82. recuperationNomFichier = re.sub(r"\.rle$", "", fichiers)
  83. recuperationGrille = re.findall(reTailleGrille, contenuFichier)
  84. recuperationValeur = re.findall(reCellulesGrille, contenuFichier)
  85.  
  86. # print("Nom du fichier :")
  87. # print(recuperationNomFichier)
  88. # print("Valeur jeu format RLE :")
  89. # print(recuperationValeur)
  90. DicoPattern[recuperationNomFichier] = [recuperationGrille, recuperationValeur]
  91.  
  92. recuperationContenu.close()
  93.  
  94. with open('stockage.txt', 'wb') as handle:
  95. pickle.dump(DicoPattern, handle, protocol=pickle.HIGHEST_PROTOCOL)
  96. print(DicoPattern["glider"])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement