Programme d'un jeu de la Vie en Python !

Messages postés
1
Date d'inscription
vendredi 18 janvier 2019
Dernière intervention
18 janvier 2019
-
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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
91
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
23 janvier 2019
1
0
Merci
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
Commenter la réponse de hbouia

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.