Changeset - 86543e726ef8
[Not reviewed]
default
0 1 0
Laman - 7 years ago 2017-10-07 17:59:20

omezená sada dílků
1 file changed with 19 insertions and 16 deletions:
tetris.py
19
16
0 comments (0 inline, 0 general)
tetris.py
Show inline comments
 
@@ -7,30 +7,30 @@ class Piece:
 
		self.variants=variants
 

	
 

	
 
pieces=[]
 
pieceSet=dict()
 

	
 
pieces.append(Piece([
 
pieceSet["sq"]=Piece([
 
	# OO
 
	# OO
 
	((0,0),(0,1),(1,0),(1,1))
 
]))
 
])
 

	
 
pieces.append(Piece([
 
pieceSet["long"]=Piece([
 
	# OOOO
 
	((0,0),(0,1),(0,2),(0,3)),
 
	((0,0),(1,0),(2,0),(3,0))
 
]))
 
])
 

	
 
pieces.append(Piece([
 
pieceSet["boat"]=Piece([
 
	# OOO
 
	# .O.
 
	((0,0),(0,1),(0,2),(1,1)),
 
	((0,0),(1,0),(2,0),(1,1)),
 
	((0,0),(1,-1),(1,0),(1,1)),
 
	((0,0),(1,-1),(1,0),(2,0))
 
]))
 
])
 

	
 
pieces.append(Piece([
 
pieceSet["sz"]=Piece([
 
	# .OO
 
	# OO.
 
	((0,0),(0,1),(1,-1),(1,0)),
 
@@ -40,9 +40,9 @@ pieces.append(Piece([
 
	# .OO
 
	((0,0),(0,1),(1,1),(1,2)),
 
	((0,0),(1,0),(1,-1),(2,-1))
 
]))
 
])
 

	
 
pieces.append(Piece([
 
pieceSet["el"]=Piece([
 
	# OOO
 
	# O..
 
	((0,0),(1,0),(0,1),(0,2)),
 
@@ -56,24 +56,27 @@ pieces.append(Piece([
 
	((0,0),(0,1),(1,0),(2,0)),
 
	((0,0),(1,0),(1,1),(1,2)),
 
	((0,0),(1,0),(2,0),(2,-1))
 
]))
 
])
 

	
 
WIDTH=5
 
WIDTH=8
 
HEIGHT=5
 
board=[[EMPTY]*WIDTH for r in range(HEIGHT)]
 

	
 

	
 
def fill(board):
 
def fill(board,pieces):
 
	point=firstEmpty(board)
 
	if not point: return True
 
	res=[]
 
	for p in pieces:
 
	for (i,(k,p)) in enumerate(pieces):
 
		if k==0: continue
 
		for v in p.variants:
 
			if place(board,point,v):
 
				partialRes=fill(board)
 
				pieces[i][0]-=1
 
				partialRes=fill(board,pieces)
 
				if partialRes:
 
					res+=[((point,v), partialRes)]
 
				remove(board,point,v)
 
				pieces[i][0]+=1
 
	return res
 

	
 

	
 
@@ -112,7 +115,7 @@ def visualise(board,tree,letter="A"):
 
		visualise(board,rest,chr(ord(letter)+1))
 

	
 

	
 
res=fill(board)
 
res=fill(board,[[k,pieceSet[x]] for (k,x) in [(2,"sq"),(2,"el"),(2,"boat"),(2,"long"),(2,"sz")]])
 
if res:
 
	visualise(board,res)
 
else:
0 comments (0 inline, 0 general)