Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- def creer_grille(n,m,v=0):
- l=[]
- for e in range(n):
- l2=[]
- for i in range (m):
- l2.append(v)
- l.append(l2)
- return l
- def mine(liste,x):
- i=0
- while i <x:
- n=randint(0,len(liste)-1)
- m=randint(0,len(liste[n])-1)
- if liste[n][m]==0:
- liste[n][m]=1
- i+=1
- return liste
- def affiche_solution(M):
- for e in range(len(M)):
- for i in range(len(M[e])):
- if M[e][i]==0:
- print("-",end="")
- else :
- print("*",end="")
- print()
- return None
- def test_mine(M,a,b):
- return M[a][b] != 0
- def compte_mine_voisine(M,i,j):
- c=0
- for e in range(i-1,i+2):
- for z in range (j-1,j+2):
- if (e >= 0 and e <= len(M)-1) and \
- (z >= 0 and z <= len(M[e])-1):
- if (e != i or z != j) and test_mine(M,e,z) :
- c+=1
- return c
- def afficheJeuqui(pos_mines, casesDevoilees):
- for e in range (len(pos_mines)) :
- for i in range (len(pos_mines[e])):
- if casesDevoilees[e][i] is True :
- print(compte_mine_voisine(pos_mines,e,i),end="")
- else :
- print("?",end="")
- print()
- def coordonnees(casesDevoilees):
- flag=0
- print("A toi de jouer !")
- while flag==0:
- print("Ligne? ",end="")
- i = int(input())
- while i >= len(casesDevoilees):
- print("Ligne <",len(casesDevoilees),"svp ?", end="")
- i = int(input())
- print("Colonne?",end="")
- j = int(input())
- while j >= len(casesDevoilees[i]):
- print("Colonne <",len(casesDevoilees[i]),"svp ?", end="")
- j = int(input())
- if casesDevoilees[i][j] is False :
- flag = 1
- return i,j
- n=int(input("Nombre de lignes ? :" ))
- m=int(input("Nombre de colonnes ? :" ))
- liste=creer_grille(n,m,v=0)
- flag2=1
- while flag2 :
- print("Entrez un nombre de mines <",n*m,":", end = "")
- x=int(input())
- if x >= n*m :
- print("Entrez un nombre de mines <",n*m,":", end = "")
- x=int(input())
- if x < n*m :
- flag2=0
- else :
- flag2=0
- mine(liste,x)
- casesDevoilees=[]
- for e in range(n):
- l2=[]
- for i in range (m):
- l2.append(False)
- casesDevoilees.append(l2)
- #affiche_solution(liste)
- nb_coup=0
- case=0
- flag=0
- case_non_mine = n*m-x
- l_coup_joue=[0]*(n*m)
- while case < case_non_mine and flag == 0:
- i,j=coordonnees(casesDevoilees)
- casesDevoilees[i][j]=True
- if liste[i][j] == 1 :
- print("Perdu, touché une mine !")
- afficheJeuqui(liste, casesDevoilees)
- print("La solution était : ")
- affiche_solution(liste)
- flag=1
- elif (i,j) in l_coup_joue :
- print("Case déjà jouée")
- else :
- afficheJeuqui(liste, casesDevoilees)
- case += 1
- nb_coup+=1
- l_coup_joue[nb_coup]=i,j
- if case == case_non_mine :
- print("Tu as gagné en", nb_coup,"coups, bravo!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement