1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| # -*- coding: latin-1 -*-
# Terrain de jeu. 0 pour les cases vides, 1 pour les cases contenant une bombe
terrain = [
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
]
# Compte le nombre de mines autour d'une case
## Retourne une tableau du terrain avec, pour chaque case, le nombre de mines alentours
def compterMines (terrain):
nbrMines = []
# Liste de positions à tester
casesATester = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]
# Parcourir le terrain
for y in range(len(terrain)-1):
nbrMines.append( [] ) # On ajoute une ligne dans le tableau que l'on va retourner
for x in range( len(terrain[0])-1 ):
nbr = 0 # Initialiser le compte des mines alentours
for c in casesATester:
# On passe au test suivant si la position testée est négative (x ou y < 0)
if x+c[0] < 0 or y+c[1] < 0:
continue
# Idem si la position testée est en dehors du terrain
if x+c[0] > len(terrain[0])-1 or y+c[1] > len(terrain)-1:
continue
# Si la case contient un 1, c'estune bombe, on incrémente le compteur (x ou y > que le tableau représentant le terrain)
if terrain[y+c[1]][x+c[0]] == 1:
nbr += 1
# On ajoute le nombre de mines dans le tableau
nbrMines[y].append(nbr)
return nbrMines
# Compter les mines du terrain
t = compterMines(terrain)
# Affichage du résultat
for y in t:
ligne = ""
for x in y:
ligne += str(x) + " "
print ligne |
Partager