Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy as np
- import random
- import matplotlib.animation as animation
- import pickle
- import os
- import re
- #================================================ Génération grille aléatoire jeu de la vie ========================================================#
- width, height = 100, 100
- mort = 0
- vie = 1
- grilletemps = np.zeros((height, width), dtype=int)
- grille = np.random.randint(0, 2, (100, 100))
- def update(i):
- reglesGameOfLife(grille)
- matrice.set_array(grille)
- return matrice,
- def reglesGameOfLife(grille):
- grilletemps = grille.copy()
- for i in range(1, width-1):
- for j in range(1, height-1):
- total = grille[i, j-1] + grille[i, j+1] + grille[i-1, j] + grille[i+1, j] + \
- grille[i-1, j-1] + grille[i-1, j+1] + \
- grille[i+1, j-1] + grille[i+1, j+1]
- if(grille[i][j] == vie):
- if(total < 2):
- grilletemps[i][j] = 0
- if(total == 3 or total == 2):
- grilletemps[i][j] = 1
- if(total > 3):
- grilletemps[i][j] = 0
- else:
- if(total == 3):
- grilletemps[i][j] = 1
- grille[:] = grilletemps[:]
- fig, ax = plt.subplots()
- matrice = ax.imshow(grille)
- print(grille)
- ani = animation.FuncAnimation(fig, update, frames=19, interval=50)
- plt.show()
- # ====================================== Parser fichier RLE ========================================
- # Vérification de la présence d'un fichier de stockage.
- try:
- with open("stockage.txt", 'rb') as file:
- DicoPattern = pickle.load(file)
- except:
- DicoPattern = {}
- # Parcourt du dossier
- # parcourt de tous les fichiers présents dans le dossiers "fichiers" qui stock les pattern
- for fichiers in os.listdir('./fichiers'):
- # test avec print(fichiers) pour vérifier que l'on récupère bien tous les fichiers
- # ici, on fais le tri entre les fichier avec l'extension .rle qui nous intéresse
- if(fichiers[-4:] == ".rle"):
- recuperationContenu = open("./fichiers/" + fichiers, "r")
- contenuFichier = recuperationContenu.read()
- print('a')
- # test avec print(contenuFichier) pour vérifier que l'on récupère le contenu des fichier RLE
- reTailleGrille = r"x\s=\s\d{1,},\sy\s=\s\d{1,}"
- reCellulesGrille = r"\s{0,}[bo\d$]{1,}\s{0,}[bo\d$]{1,}!$"
- # Récupération des informations dans les fichiers, parsing de la chaine de caractères
- recuperationNomFichier = re.sub(r"\.rle$", "", fichiers)
- recuperationGrille = re.findall(reTailleGrille, contenuFichier)
- recuperationValeur = re.findall(reCellulesGrille, contenuFichier)
- # print("Nom du fichier :")
- # print(recuperationNomFichier)
- # print("Valeur jeu format RLE :")
- # print(recuperationValeur)
- DicoPattern[recuperationNomFichier] = [recuperationGrille, recuperationValeur]
- recuperationContenu.close()
- with open('stockage.txt', 'wb') as handle:
- pickle.dump(DicoPattern, handle, protocol=pickle.HIGHEST_PROTOCOL)
- print(DicoPattern["glider"])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement