bucket
from blocks import CLEAR, blocks, colors
create_row = lambda column: [CLEAR for column in range(WIDTH)]
HEIGHT = 20
WIDTH = 10
class Bucket:
def __init__(self):
self.bucket = [create_row(_) for _ in range(HEIGHT)]
def draw_tetromino(self, row, column, block, rotation, clear=False):
for color in blocks[block][rotation]:
(x, y) = (color[0] + column, color[1] + row)
self.bucket[y][x] = CLEAR if clear else colors[block]
def clear_tetromino(self, row, column, block, rotation):
self.draw_tetromino(row, column, block, rotation, True)
def test_tetromino(self, row, column, block, rotation):
for color in blocks[block][rotation]:
(x, y) = (color[0] + column, color[1] + row)
if x < 0 or x >= WIDTH or y >= HEIGHT:
return False
if self.bucket[y][x] != CLEAR:
return False
return True
def clear_lines(self):
# remove full lines
self.bucket = [row for row in self.bucket if CLEAR in row]
lines_cleared = HEIGHT - len(self.bucket)
# add rows on top
self.bucket = [create_row(row) for row in range(lines_cleared)] + self.bucket
return lines_cleared
Download
from blocks import CLEAR, blocks, colors
create_row = lambda column: [CLEAR for column in range(WIDTH)]
HEIGHT = 20
WIDTH = 10
class Bucket:
def __init__(self):
self.bucket = [create_row(_) for _ in range(HEIGHT)]
def draw_tetromino(self, row, column, block, rotation, clear=False):
for color in blocks[block][rotation]:
(x, y) = (color[0] + column, color[1] + row)
self.bucket[y][x] = CLEAR if clear else colors[block]
def clear_tetromino(self, row, column, block, rotation):
self.draw_tetromino(row, column, block, rotation, True)
def test_tetromino(self, row, column, block, rotation):
for color in blocks[block][rotation]:
(x, y) = (color[0] + column, color[1] + row)
if x < 0 or x >= WIDTH or y >= HEIGHT:
return False
if self.bucket[y][x] != CLEAR:
return False
return True
def clear_lines(self):
# remove full lines
self.bucket = [row for row in self.bucket if CLEAR in row]
lines_cleared = HEIGHT - len(self.bucket)
# add rows on top
self.bucket = [create_row(row) for row in range(lines_cleared)] + self.bucket
return lines_cleared