• Aucun résultat trouvé

Projet : Le jeu de la vie

N/A
N/A
Protected

Academic year: 2022

Partager "Projet : Le jeu de la vie"

Copied!
2
0
0

Texte intégral

(1)

Première NSI Mme Pierrot

Le Jeu de la vie de Conway

Thème : Automates cellulaires - Interface graphique.

Notions : Boucles imbriquées – Animation d’une fenêtre avec le module tkinter.

Eléments d’information et exemples.

Sitographie :

https://scienceetonnante.com/2017/12/08/le-jeu-de-la-vie/

https://www.jeulin.net/automates/automate.html

Règles d’évolution des cellules :

• Une cellule vivante entourée de moins de deux voisins vivants meure de solitude

• Une cellule vivante entourée de plus de trois voisins vivants meure de surpeuplement

• Une cellule morte entourée de exactement trois voisins vivants renait.

Exemple d’évolution :

Travail à réaliser

Partie 1 

: Modification du programme donné en annexe afin que les cellules obéissent au règles d'évolution du jeu de la vie de Conway.

Exécuter le programme donné en annexe (téléchargeable)

1) Modifier le programme afin que la grille d’étude soit plus grande (ex. 100*100) en réduisant si nécessaire la taille des cellules.

2) Quelle est la fonction qui s’appelle elle-même au bout d’une seconde et demi ? 3) De quelle couleur sont représentées les cellules mortes ? Et les cellules vivantes ? 4) Que représente la variable « cell »

5) Écrire une fonction « voisins_vivants_tore (a,b) » qui pour un couple de coordonnées (a,b) dans notre tableau renvoie le nombre de voisins vivants.

Remarque : pour éviter les complications au niveau des bords et des coins (où le nombre de voisins diminue) on considère que notre milieu d’étude est torique c’est à dire que la droite du tableau se continue avec la gauche du tableau et le haut se poursuit avec le bas…. Voir ci-contre si une image vous aide à visualiser la chose…

6) Enfin modifier la fonction « calculer » afin que le programme permette d’observer

l’évolution du jeu de la vie de Conway à partir d’une sélection aléatoire de cellules vivantes.

Partie 2 

: Amélioration du programme pour étudier des figures particulières Ajouter les fonctionnalités suivantes :

• Un bouton « go ! » qui permet de lancer l’évolution

• Un bouton « stop » pour la mettre en pause

• La possibilité de convertir des cellules vivantes en cellules mortes en cliquant dessus ou de convertir des cellules mortes en cellules vivantes en cliquant dessus.

• On enlèvera alors la génération de cellules vivantes de façon aléatoire au début ou bien on l’associera à un troisième bouton

(2)

Première NSI Mme Pierrot

Annexe : Programme de départ qui obéit à d’autres règles que celles du jeu de la vie de Conway

# Squelette à transformmer en jeu de la vie from tkinter import *

from random import randrange haut = 15 # hauteur du tableau larg = 15 # largeur du tableau

cote = 25 # coté d'une cellule en pixel vivant = 1

mort = 0

# Créer les matrices

cell = [[0 for row in range(haut)] for col in range(larg)]

etat = [[mort for row in range(haut)] for col in range(larg)]

temp = [[mort for row in range(haut)] for col in range(larg)]

# Calculer et dessiner le prochain tableau def tableau():

calculer() dessiner()

fenetre.after(1500, tableau)

# Donnees initiales def init():

for y in range(haut):

for x in range(larg):

etat[x][y] = mort temp[x][y] = mort

cell[x][y] = canvas.create_rectangle((x*cote, y*cote,

(x+1)*cote, (y+1)*cote), outline="gray", fill="white")

# placer au hasard 25% de cellules vivantes for i in range(larg*haut//4):

etat[randrange(larg)][randrange(haut)] = vivant

# Appliquer les règles def calculer():

for y in range(haut):

for x in range(larg):

if etat[(x+1)%larg][(y-1)%haut] == vivant : temp[x][y] = mort

if etat[(x+1)%larg][(y-1)%haut] == mort : temp[x][y] = vivant

for y in range(haut):

for x in range(larg):

etat[x][y] = temp[x][y]

# Dessiner toutes les cellules def dessiner():

for y in range(haut):

for x in range(larg):

if etat[x][y]==0:

coul = "white"

else:

coul = "blue"

canvas.itemconfig(cell[x][y], fill=coul)

# Lancement du programme fenetre = Tk()

fenetre.title("Le jeu de la vie de Conway")

canvas = Canvas(fenetre, width=cote*larg, height=cote*haut, highlightthickness=0) canvas.pack()

init() tableau()

fenetre.mainloop()

Références

Documents relatifs

Dresser la liste des variables utilisées (entrée, sortie ou intermédiaire) et leur attribuer à chacune une lettre de l’alphabet (ce seront les cases mémoires utilisées par

[r]

[r]

- Déterminer l'expression algébrique d'une fonction affine à partir de la donnée de deux nombres et de leurs images.. - Représenter graphiquement une

Cours n°6 : Continuité, théorème des valeurs intermédiaires VII) Continuité d'une fonction – théorème des valeurs intermédiaires.

[r]

Exercice 2 Une entreprise fabrique chaque mois x tonnes d’un certain produit, avec x appartenant à l’intervalle ]0 ; 6].. À l’aide de la

Mais attention, procédant ainsi, on compte chaque polygone deux fois car l'ordre global des points n'importe pas (par exemple, le polygone ABCD est le même que le polygone ADCB