Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.34 KB | None | 0 0
  1. import random
  2.  
  3.  
  4. class plateau:
  5.     def __init__(self,h,l):
  6.         self.table=[]
  7.         self.Char=['a','b','c']
  8.         self.hauteur=h
  9.         self.largeur=l
  10.         self.nbcoup=0
  11.         self.coupj=[]
  12.         self.caseaSuppr=[]
  13.         self.case=[]
  14.         self.coup=[]
  15.         self.score=0
  16.        
  17.     def remplissage(self):
  18.         for i in range(self.hauteur):
  19.             self.table+=[[]]            
  20.             for j in range(self.largeur):
  21.                 while True:
  22.                     tempo=random.choice(self.Char)
  23.                    
  24.                     if (j<2)or(tempo!=self.table[i][j-1])or(tempo!=self.table[i][j-2]):
  25.                         self.table[i]+=[tempo]
  26.                         break
  27.            
  28.     def affiche(self):
  29.         for i in self.table:
  30.             affiche=''
  31.             for j in i:
  32.                 affiche=affiche+j+' '
  33.             print(affiche)
  34.            
  35.            
  36.     def saisiecase(self):
  37.         a=self.hauteur
  38.         b=self.largeur
  39.         while True:
  40.             l=input("ligne :")
  41.             c=input("colonne:")
  42.             if l<a and c<b and self.table[l][c]!='_':
  43.                 self.case= [l,c]
  44.             else :
  45.                 print("Saisie incorrecte")
  46.                
  47.     def saisieCoup(self,i,j):
  48.         while True:
  49.             coup=input("vers qu'elle case voulez vous la deplacer?\n")
  50.             if 0<=i<self.hauteur and 0<=j<self.largeur:
  51.                 if (coup=='u' and i>0)or(coup=='d' and i<self.hauteur-1)or(coup=='r' and j>0)or (coup=='l' and j<self.largeur-1):
  52.                     self.coup=coup
  53.                    
  54.     def couptemp(self):
  55.         self.saisiecase()
  56.         self.saisieCoup()
  57.         l=self.case[0]
  58.         c=self.case[1]
  59.         temp=self.table[l][c]
  60.         if self.coup=='u':
  61.             self.table[l][c]=self.table[l-1][c]
  62.             self.table[l-1][c]=temp
  63.             self.case+=[l,c,l-1,c]
  64.         elif self.coup=='d':
  65.             self.table[l][c]=self.table[l+1][c]
  66.             self.table[l+1][c]=temp
  67.             self.case+=[l,c,l+1,c]
  68.         elif self.coup=='r':
  69.             self.table[l][c]=self.table[l][c+1]
  70.             self.table[l][c+1]=temp
  71.             self.case+=[l,c,l,c+1]
  72.         elif self.coup=='l':
  73.             self.table[l][c]=self.table[l][c-1]
  74.             self.table[l][c-1]=temp
  75.             self.case+=[l,c,l,c-1]
  76.            
  77.     def inverscoup(self):
  78.         l=self.case[0]
  79.         c=self.case[1]
  80.         temp=self.table[l][c]
  81.         if self.coup=='d':
  82.             self.table[l][c]=self.table[l-1][c]
  83.             self.table[l-1][c]=temp
  84.             self.case+=[l,c,l-1,c]
  85.         elif self.coup=='u':
  86.             self.table[l][c]=self.table[l+1][c]
  87.             self.table[l+1][c]=temp
  88.             self.case+=[l,c,l+1,c]
  89.         elif self.coup=='l':
  90.             self.table[l][c]=self.table[l][c+1]
  91.             self.table[l][c+1]=temp
  92.             self.case+=[l,c,l,c+1]
  93.         elif self.coup=='r':
  94.             self.table[l][c]=self.table[l][c-1]
  95.             self.table[l][c-1]=temp
  96.             self.case+=[l,c,l,c-1]
  97.        
  98.    
  99.     def verifcoupHor(self,i,j):#cette fonction verifie si le coup Aligne 3cases ou plus en horizontal
  100.         if j==0:
  101.             if self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
  102.                 return [[i,j],[i,j+1],[i,j+2]]
  103.             else:
  104.                 return []
  105.                
  106.                
  107.         elif j==1:
  108.             if self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
  109.                 return [[i,j-1],[i,j],[i,j+1],[i,j+2]]
  110.             elif self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
  111.                 return [[i,j],[i,j+1],[i,j+2]]
  112.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
  113.                 return [[i,j],[i,j-1],[i,j+2]]
  114.             else:
  115.                 return []
  116.                
  117.                
  118.         elif j==self.largeur-1:
  119.             if self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
  120.                 return [[i,j],[i,j-1],[i,j-2]]
  121.             else:
  122.                 return []
  123.                
  124.         elif j==self.largeur-2:
  125.             if self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
  126.                 return [[i,j+1],[i,j],[i,j-1],[i,j-2]]
  127.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
  128.                 return [[i,j],[i,j-1],[i,j-2]]
  129.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
  130.                 return [[i,j],[i,j-1],[i,j+1]]
  131.             else:
  132.                 return []
  133.                
  134.                
  135.         else:
  136.             if self.table[i][j]==self.table[i][j+2] and self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
  137.                 return [[i,j+2],[i,j+1],[i,j],[i,j-1],[i,j-2]]
  138.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]and self.table[i][j]==self.table[i][j+1]:
  139.                 return [[i,j+1],[i,j]+[i,j-1]+[i,j-2]]
  140.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
  141.                 return [[i,j],[i,j-1],[i,j+1],[i,j+2]]
  142.             elif self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
  143.                 return [[i,j],[i,j+1],[i,j+2]]
  144.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
  145.                 return [[i,j]+[i,j-1]+[i,j-2]]
  146.             elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
  147.                 return [[i,j],[i,j-1],[i,j+1]]
  148.             else:
  149.                 return []
  150.                
  151.     def verifcoupVer(self,i,j): #cette fonction verifie si le coup Aligne 3cases ou plus en vertical
  152.         if i==0:
  153.             if self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
  154.                 return [[i,j],[i+1,j],[i+2,j]]
  155.             else:
  156.                 return []
  157.         elif i==1:
  158.             if self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
  159.                 return [[i-1,j],[i,j],[i+1,j],[i+2,j]]
  160.             elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
  161.                 return [[i,j],[i+1,j],[i+2,j]]
  162.             elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i-1][j]:
  163.                 return [[i-1,j],[i,j],[i+1,j]]
  164.             else:
  165.                 return []
  166.         elif i==self.hauteur-1:
  167.             if self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  168.                 return [[i,j],[i-1,j],[i-2,j]]
  169.             else:
  170.                 return []
  171.                
  172.         elif j==self.largeur-2:
  173.             if self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  174.                 return [[i,j+1],[i,j],[i-1,j],[i-2,j]]
  175.             elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  176.                 return [[i,j],[i,j-1],[i,j-2]]
  177.             elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]:
  178.                 return [[i,j],[i-1,j],[i+1,j]]
  179.             else:
  180.                 return []
  181.                
  182.                
  183.         else:
  184.             if self.table[i][j]==self.table[i+2][j] and self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  185.                 return [[i+2,j],[i,j+1],[i,j],[i-1,j],[i-2,j]]
  186.             elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  187.                 return [[i,j+1],[i,j],[i-1,j],[i-2,j]]
  188.             elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
  189.                 return [[i-1,j],[i,j],[i+1,j],[i+2,j]]
  190.             elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
  191.                 return [[i,j],[i,j-1],[i,j-2]]
  192.             elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
  193.                 return [[i,j],[i+1,j],[i+2,j]]
  194.             elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]:
  195.                 return [[i,j],[i-1,j],[i+1,j]]
  196.             else:
  197.                 return []
  198.            
  199.     def verifcoup(self):
  200.         self.coup=self.case[0][1]
  201.         h,l=self.couptemp[0],self.couptemp[1]
  202.         Hor=self.verifcoupHor(h,l)
  203.         Ver=self.verifcoupVer(h,l)
  204.         for i in Hor:
  205.             if i not in self.caseaSuppr:
  206.                 self.caseaSuppr+=i
  207.         for i in Ver:
  208.             if i not in self.caseaSuppr:
  209.                 self.caseaSuppr+=i
  210.                
  211.         self.coup=self.case[2][3]
  212.         Hor=self.verifcoupHor()
  213.         Ver=self.verifcoupVer()
  214.         for i in Hor:
  215.             if i not in self.caseaSuppr:
  216.                 self.caseaSuppr+=i
  217.         for i in Ver:
  218.             if i not in self.caseaSuppr:
  219.                 self.caseaSuppr+=i
  220.    
  221.     def suppr(self):
  222.         while self.caseaSuppr!=[]:
  223.             caseavider=self.caseaSuppr
  224.             self.table[[0]][caseavider[1]]='_'
  225.             self.caseaSuppr.pop()
  226.            
  227.     def gravite(self):
  228.         for j in range(self.largeur):
  229.             temp,count=self.hauteur-1,0
  230.             for i in range(self.hauteur-1,-1,-1):
  231.                 if self.table[i][j]!='_':
  232.                     self.table[temp][j]=self.table[i][j]
  233.                     temp-=1
  234.                 else:
  235.                     count+=1
  236.             for i in range(count):
  237.                 self.table[i][j]=random.choice(self.Char)
  238.                        
  239.     def antiAlign(self):
  240.         cond=True
  241.         while cond==True:
  242.             ancienneTable=self.table
  243.             for i in range(self.hauteur):
  244.                 for j in range(self.largeur):
  245.                     Hor=self.verifcoupHor(h,l)
  246.                     Ver=self.verifcoupVer(h,l)
  247.                     for i in Hor:
  248.                         if i not in self.caseaSuppr:
  249.                             self.caseaSuppr+=i
  250.                     for i in Ver:
  251.                         if i not in self.caseaSuppr:
  252.                             self.caseaSuppr+=i
  253.                     self.suppr()        
  254.                    
  255.             if ancienneTable==self.table:
  256.                 cond=False
  257.                
  258.            
  259.     def jouer(self):
  260.         while True:
  261.             if input("voulez vous arreter")=="oui":
  262.                 break
  263.            
  264.             self.couptemp()
  265.             self.verifcoup()
  266.            
  267.             if self.caseaSuppr==[]:
  268.                 self.inverscoup()
  269.             else:
  270.                 self.suppr()
  271.                 self.gravite()
  272.                
  273.            
  274.                
  275.                
  276. if __name__=='__main__':
  277.     tab=plateau(9,9)
  278.     tab.remplissage()
  279.     tab.affiche()
  280.     print("____________________________________________")
  281.     tab.gravite()
  282.     tab.affiche()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement