Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.28 KB | None | 0 0
  1. from random import randint
  2.  
  3. def creer_grille(n,m,v=0):
  4.     l=[]
  5.     for e in range(n):
  6.         l2=[]
  7.         for i in range (m):
  8.             l2.append(v)
  9.         l.append(l2)
  10.  
  11.  
  12.     return l
  13.  
  14.  
  15. def mine(liste,x):
  16.     i=0
  17.     while i <x:
  18.         n=randint(0,len(liste)-1)
  19.         m=randint(0,len(liste[n])-1)
  20.         if liste[n][m]==0:
  21.             liste[n][m]=1
  22.             i+=1
  23.     return liste
  24.  
  25. def affiche_solution(M):
  26.     for e in range(len(M)):
  27.         for i in range(len(M[e])):
  28.             if M[e][i]==0:
  29.                 print("-",end="")
  30.             else :
  31.                 print("*",end="")
  32.         print()
  33.     return None
  34.  
  35.  
  36. def test_mine(M,a,b):
  37.     return M[a][b] != 0
  38.  
  39. def compte_mine_voisine(M,i,j):
  40.     c=0
  41.    
  42.  
  43.  
  44.     for e in range(i-1,i+2):
  45.         for z in range (j-1,j+2):
  46.             if (e >= 0 and e <= len(M)-1) and \
  47.                     (z >= 0 and z <= len(M[e])-1):
  48.                 if (e != i or z != j) and test_mine(M,e,z) :
  49.                         c+=1
  50.     return c
  51.  
  52.  
  53. def afficheJeuqui(pos_mines, casesDevoilees):
  54.     for e in range (len(pos_mines)) :
  55.         for i in range (len(pos_mines[e])):
  56.             if casesDevoilees[e][i] is True :
  57.                 print(compte_mine_voisine(pos_mines,e,i),end="")
  58.             else :
  59.                 print("?",end="")
  60.         print()
  61.  
  62.  
  63. def coordonnees(casesDevoilees):
  64.     flag=0
  65.     print("A toi de jouer !")
  66.     while flag==0:
  67.         print("Ligne? ",end="")
  68.         i = int(input())
  69.         while i >= len(casesDevoilees):
  70.             print("Ligne <",len(casesDevoilees),"svp ?", end="")
  71.             i = int(input())
  72.         print("Colonne?",end="")
  73.         j = int(input())
  74.         while j >= len(casesDevoilees[i]):
  75.             print("Colonne <",len(casesDevoilees[i]),"svp ?", end="")
  76.             j = int(input())
  77.  
  78.         if casesDevoilees[i][j] is False :
  79.             flag = 1
  80.  
  81.         return i,j
  82.  
  83.  
  84.  
  85.  
  86.  
  87. n=int(input("Nombre de lignes ? :" ))
  88. m=int(input("Nombre de colonnes ? :" ))
  89. liste=creer_grille(n,m,v=0)
  90.  
  91. flag2=1
  92. while flag2 :
  93.     print("Entrez un nombre de mines <",n*m,":", end = "")
  94.     x=int(input())
  95.     if x >= n*m :
  96.         print("Entrez un nombre de mines <",n*m,":", end = "")
  97.         x=int(input())
  98.  
  99.         if x < n*m :
  100.             flag2=0
  101.    
  102.     else :
  103.         flag2=0
  104.  
  105.  
  106. mine(liste,x)
  107.  
  108. casesDevoilees=[]
  109. for e in range(n):
  110.         l2=[]
  111.         for i in range (m):
  112.             l2.append(False)
  113.         casesDevoilees.append(l2)
  114.  
  115.  
  116.  
  117.  
  118. #affiche_solution(liste)    
  119.        
  120. nb_coup=0
  121. case=0
  122. flag=0
  123. case_non_mine = n*m-x
  124. l_coup_joue=[0]*(n*m)
  125.  
  126. while case < case_non_mine and flag == 0:      
  127.  
  128.     i,j=coordonnees(casesDevoilees)
  129.     casesDevoilees[i][j]=True
  130.    
  131.    
  132.  
  133.  
  134.     if liste[i][j] == 1 :
  135.         print("Perdu, touché une mine !")
  136.         afficheJeuqui(liste, casesDevoilees)
  137.         print("La solution était : ")
  138.         affiche_solution(liste)
  139.         flag=1
  140.     elif (i,j) in l_coup_joue :
  141.         print("Case déjà jouée")
  142.    
  143.     else :
  144.         afficheJeuqui(liste, casesDevoilees)
  145.         case += 1
  146.         nb_coup+=1
  147.         l_coup_joue[nb_coup]=i,j
  148.        
  149.        
  150. if case == case_non_mine :
  151.     print("Tu as gagné en", nb_coup,"coups, bravo!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement