Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class plateau:
- def __init__(self,h,l):
- self.table=[]
- self.Char=['a','b','c']
- self.hauteur=h
- self.largeur=l
- self.nbcoup=0
- self.coupj=[]
- self.caseaSuppr=[]
- self.case=[]
- self.coup=[]
- self.score=0
- def remplissage(self):
- for i in range(self.hauteur):
- self.table+=[[]]
- for j in range(self.largeur):
- while True:
- tempo=random.choice(self.Char)
- if (j<2)or(tempo!=self.table[i][j-1])or(tempo!=self.table[i][j-2]):
- self.table[i]+=[tempo]
- break
- def affiche(self):
- for i in self.table:
- affiche=''
- for j in i:
- affiche=affiche+j+' '
- print(affiche)
- def saisiecase(self):
- a=self.hauteur
- b=self.largeur
- while True:
- l=input("ligne :")
- c=input("colonne:")
- if l<a and c<b and self.table[l][c]!='_':
- self.case= [l,c]
- else :
- print("Saisie incorrecte")
- def saisieCoup(self,i,j):
- while True:
- coup=input("vers qu'elle case voulez vous la deplacer?\n")
- if 0<=i<self.hauteur and 0<=j<self.largeur:
- 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):
- self.coup=coup
- def couptemp(self):
- self.saisiecase()
- self.saisieCoup()
- l=self.case[0]
- c=self.case[1]
- temp=self.table[l][c]
- if self.coup=='u':
- self.table[l][c]=self.table[l-1][c]
- self.table[l-1][c]=temp
- self.case+=[l,c,l-1,c]
- elif self.coup=='d':
- self.table[l][c]=self.table[l+1][c]
- self.table[l+1][c]=temp
- self.case+=[l,c,l+1,c]
- elif self.coup=='r':
- self.table[l][c]=self.table[l][c+1]
- self.table[l][c+1]=temp
- self.case+=[l,c,l,c+1]
- elif self.coup=='l':
- self.table[l][c]=self.table[l][c-1]
- self.table[l][c-1]=temp
- self.case+=[l,c,l,c-1]
- def inverscoup(self):
- l=self.case[0]
- c=self.case[1]
- temp=self.table[l][c]
- if self.coup=='d':
- self.table[l][c]=self.table[l-1][c]
- self.table[l-1][c]=temp
- self.case+=[l,c,l-1,c]
- elif self.coup=='u':
- self.table[l][c]=self.table[l+1][c]
- self.table[l+1][c]=temp
- self.case+=[l,c,l+1,c]
- elif self.coup=='l':
- self.table[l][c]=self.table[l][c+1]
- self.table[l][c+1]=temp
- self.case+=[l,c,l,c+1]
- elif self.coup=='r':
- self.table[l][c]=self.table[l][c-1]
- self.table[l][c-1]=temp
- self.case+=[l,c,l,c-1]
- def verifcoupHor(self,i,j):#cette fonction verifie si le coup Aligne 3cases ou plus en horizontal
- if j==0:
- if self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
- return [[i,j],[i,j+1],[i,j+2]]
- else:
- return []
- elif j==1:
- 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]:
- return [[i,j-1],[i,j],[i,j+1],[i,j+2]]
- elif self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
- return [[i,j],[i,j+1],[i,j+2]]
- elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
- return [[i,j],[i,j-1],[i,j+2]]
- else:
- return []
- elif j==self.largeur-1:
- if self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
- return [[i,j],[i,j-1],[i,j-2]]
- else:
- return []
- elif j==self.largeur-2:
- 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]:
- return [[i,j+1],[i,j],[i,j-1],[i,j-2]]
- elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
- return [[i,j],[i,j-1],[i,j-2]]
- elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
- return [[i,j],[i,j-1],[i,j+1]]
- else:
- return []
- else:
- 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]:
- return [[i,j+2],[i,j+1],[i,j],[i,j-1],[i,j-2]]
- 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]:
- return [[i,j+1],[i,j]+[i,j-1]+[i,j-2]]
- 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]:
- return [[i,j],[i,j-1],[i,j+1],[i,j+2]]
- elif self.table[i][j]==self.table[i][j+1]and self.table[i][j]==self.table[i][j+2]:
- return [[i,j],[i,j+1],[i,j+2]]
- elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j-2]:
- return [[i,j]+[i,j-1]+[i,j-2]]
- elif self.table[i][j]==self.table[i][j-1]and self.table[i][j]==self.table[i][j+1]:
- return [[i,j],[i,j-1],[i,j+1]]
- else:
- return []
- def verifcoupVer(self,i,j): #cette fonction verifie si le coup Aligne 3cases ou plus en vertical
- if i==0:
- if self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
- return [[i,j],[i+1,j],[i+2,j]]
- else:
- return []
- elif i==1:
- 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]:
- return [[i-1,j],[i,j],[i+1,j],[i+2,j]]
- elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
- return [[i,j],[i+1,j],[i+2,j]]
- elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i-1][j]:
- return [[i-1,j],[i,j],[i+1,j]]
- else:
- return []
- elif i==self.hauteur-1:
- if self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
- return [[i,j],[i-1,j],[i-2,j]]
- else:
- return []
- elif j==self.largeur-2:
- 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]:
- return [[i,j+1],[i,j],[i-1,j],[i-2,j]]
- elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
- return [[i,j],[i,j-1],[i,j-2]]
- elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]:
- return [[i,j],[i-1,j],[i+1,j]]
- else:
- return []
- else:
- 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]:
- return [[i+2,j],[i,j+1],[i,j],[i-1,j],[i-2,j]]
- 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]:
- return [[i,j+1],[i,j],[i-1,j],[i-2,j]]
- 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]:
- return [[i-1,j],[i,j],[i+1,j],[i+2,j]]
- elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i-2][j]:
- return [[i,j],[i,j-1],[i,j-2]]
- elif self.table[i][j]==self.table[i+1][j]and self.table[i][j]==self.table[i+2][j]:
- return [[i,j],[i+1,j],[i+2,j]]
- elif self.table[i][j]==self.table[i-1][j]and self.table[i][j]==self.table[i+1][j]:
- return [[i,j],[i-1,j],[i+1,j]]
- else:
- return []
- def verifcoup(self):
- self.coup=self.case[0][1]
- h,l=self.couptemp[0],self.couptemp[1]
- Hor=self.verifcoupHor(h,l)
- Ver=self.verifcoupVer(h,l)
- for i in Hor:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- for i in Ver:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- self.coup=self.case[2][3]
- Hor=self.verifcoupHor()
- Ver=self.verifcoupVer()
- for i in Hor:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- for i in Ver:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- def suppr(self):
- while self.caseaSuppr!=[]:
- caseavider=self.caseaSuppr
- self.table[[0]][caseavider[1]]='_'
- self.caseaSuppr.pop()
- def gravite(self):
- for j in range(self.largeur):
- temp,count=self.hauteur-1,0
- for i in range(self.hauteur-1,-1,-1):
- if self.table[i][j]!='_':
- self.table[temp][j]=self.table[i][j]
- temp-=1
- else:
- count+=1
- for i in range(count):
- self.table[i][j]=random.choice(self.Char)
- def antiAlign(self):
- cond=True
- while cond==True:
- ancienneTable=self.table
- for i in range(self.hauteur):
- for j in range(self.largeur):
- Hor=self.verifcoupHor(h,l)
- Ver=self.verifcoupVer(h,l)
- for i in Hor:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- for i in Ver:
- if i not in self.caseaSuppr:
- self.caseaSuppr+=i
- self.suppr()
- if ancienneTable==self.table:
- cond=False
- def jouer(self):
- while True:
- if input("voulez vous arreter")=="oui":
- break
- self.couptemp()
- self.verifcoup()
- if self.caseaSuppr==[]:
- self.inverscoup()
- else:
- self.suppr()
- self.gravite()
- if __name__=='__main__':
- tab=plateau(9,9)
- tab.remplissage()
- tab.affiche()
- print("____________________________________________")
- tab.gravite()
- tab.affiche()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement