Programme d'un jeu de la Vie en Python !

Boumiz Messages postés 1 Date d'inscription vendredi 18 janvier 2019 Statut Membre Dernière intervention 18 janvier 2019 - Modifié le 19 janv. 2019 à 03:30
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 - 23 janv. 2019 à 10:37
Bonjour, je suis actuellement en TS et pour mardi, je suis censé coder un jeu de la vie en python mais le seul problème, c'est que j'ai vaguement l'impression que notre professeur nous a appris un peu vite à programmer c'est-à-dire qu'il y a pleins de choses que l'on a jamais utilisé comme Tkinter par exemple.
J'ai essayé tant que bien de de mal de regarder sur Internet, des solutions pour me débloquer dans mon casse tête, en vain.

Voici le code que j'ai déjà effectué :
from random import randint
c=int(input("Combien voulez-vous de colonnes ?"))
l=int(input("Combien voulez-vous de lignes ?"))


def maGrille(nb_lig,nb_col):
    maGrille=[]
    for a in range(nb_lig):
        grille=[]
        for b in range(nb_col):
            grille=grille+[randint(0,1)]
        maGrille=maGrille+[grille]
    return maGrille

G=maGrille(nb_lig,nb_col)


def affiche(grille):
    n=len(grille)
    for a in range(n):
        print(grille[a])
        
affiche(maGrille)

#Pour les angles

def Compter(grille,lignes,colonnes):
    if lignes==0 and colonnes==0:
        n=grille[1][0]+grille[1][1]+grille[0][1]
    if lignes==0 and nb_col-1==colonnes:
        n=grille[0][colonnes-2]+grille[1][colonnes-2]+grille[1][colonnes-1]
    if lignes==nb_lig-1 and nb_col==0:
        n=grille[nb_lig-2][0]+grille[l-2][1]+grille[l-1][1]
    if lignes==nb_lig-1 and nb_col-1==colonnes:
        n=grille[nb_lig-1][nb_col-2]+grille[nb_lig-2][nb_col-2]+grille[nb_lig-2][nb_col-1]
    return n



Je suis maintenant censé compter le nombre de voisins pour les côtés, je n'y arrive pas
Donc une âme charitable pourrait m'aider ou me programmer cette partie juste pour comprendre mon erreur ?
Merci d'avance

1 réponse

hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
23 janv. 2019 à 10:37
Bonjour,

Si ça peut décoïncer ton problème je te propose de lire le bout de code suivant avec ses commentaires :

from random import randint
from numpy import zeros

nb_col=int(input("Combien voulez-vous de colonnes ?\n"))
nb_lig=int(input("Combien voulez-vous de lignes ?\n"))

# On dimensionne une grille remplie initialement de 0 avec :
# une ligne supplémentaire aux bords inférieur et supérieur
# et une colonne supplémentaires aux bords gauche et droit.
# On a ainsi une grille sous forme de matrice (0:nb_lig+1 , 0:nb_col+1).
# On sintéresse après uniquement aux cases (1:nb_lig , 1:nb_col).
# Ceci facilite le comptage des cases voisines contenant des cellules 
# vivantes (contenant des 1) sans se préoccuper des bords de la grille
# avec des tests (if then else)

# Initialisation de la grille avec des zéros type entier
grille=zeros((nb_lig+2,nb_col+2),int)

# Initialisation aléatoire de la zone d'intérêt de la grille
for i in range(1,nb_lig+1):
    for j in range(1,nb_col+1):
        grille[i,j]=randint(0,1)

# Coordonnées relatives des cases voisines d'une case donnée
coord=[(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1),(1,0),(1,1)]

# Affichage d'une grille
def afficher(grille,nb_lig,nb_col):
    print "\n"
    for i in range(1,nb_lig+1):
        for j in range(1,nb_col+1):
            print grille[i,j],
        print
    print "\n"

#    for i in range(1,nb_lig+1):
#        for j in range(1,nb_col+1):
#            print compter(grille,i,j),
#        print
#    print "\n"


# Compteur de cellules vivantes voisines
def compter(grille,i,j):
    '''Retourne le nombre de cellules vivantes autour de la case (i,j)'''
    compteur=0
    for (i1,j1) in coord:
        compteur+=grille[i+i1,j+j1]
    return compteur
1
Rejoignez-nous