Counting and displaying number of completed lines
This commit is contained in:
parent
2646e334ba
commit
ac709c8865
29
tetris.py
29
tetris.py
@ -160,6 +160,8 @@ class Board:
|
|||||||
|
|
||||||
|
|
||||||
def settle(self):
|
def settle(self):
|
||||||
|
settled_count = 0
|
||||||
|
|
||||||
row_src = row_dst = self.grid_dims[1] - 1
|
row_src = row_dst = self.grid_dims[1] - 1
|
||||||
while row_dst >= 0:
|
while row_dst >= 0:
|
||||||
row_data = self.blocks[row_src] if row_src >= 0 else self.grid_dims[0] * [0]
|
row_data = self.blocks[row_src] if row_src >= 0 else self.grid_dims[0] * [0]
|
||||||
@ -167,6 +169,10 @@ class Board:
|
|||||||
row_src -= 1
|
row_src -= 1
|
||||||
if 0 in row_data:
|
if 0 in row_data:
|
||||||
row_dst -= 1
|
row_dst -= 1
|
||||||
|
else:
|
||||||
|
settled_count += 1
|
||||||
|
|
||||||
|
return settled_count
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -174,9 +180,13 @@ class Board:
|
|||||||
#
|
#
|
||||||
|
|
||||||
class Game:
|
class Game:
|
||||||
interval = 500
|
text_color = 0xeeeeecff
|
||||||
|
text_bg_color = 0x000000ff
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
font_path = pygame.font.get_default_font()
|
||||||
|
self.font = pygame.font.Font(font_path, 16)
|
||||||
|
|
||||||
self.new_game()
|
self.new_game()
|
||||||
|
|
||||||
|
|
||||||
@ -186,6 +196,7 @@ class Game:
|
|||||||
padding = 10
|
padding = 10
|
||||||
self.board = Board((padding, padding), (10, 20), border_width, block_dims)
|
self.board = Board((padding, padding), (10, 20), border_width, block_dims)
|
||||||
self.board_prev = Board((self.board.grid_rect.right+padding, padding), (4, 4), border_width, block_dims)
|
self.board_prev = Board((self.board.grid_rect.right+padding, padding), (4, 4), border_width, block_dims)
|
||||||
|
self.score_position = self.board_prev.grid_rect.left, self.board_prev.grid_rect.bottom+padding
|
||||||
|
|
||||||
self.tetrad = Tetrad.random()
|
self.tetrad = Tetrad.random()
|
||||||
self.tetrad = self.tetrad.centered(self.board.grid_dims[0])
|
self.tetrad = self.tetrad.centered(self.board.grid_dims[0])
|
||||||
@ -193,6 +204,8 @@ class Game:
|
|||||||
self.tetrad_preview = None
|
self.tetrad_preview = None
|
||||||
|
|
||||||
self.counter = 0
|
self.counter = 0
|
||||||
|
self.interval = 500
|
||||||
|
self.lines = 0
|
||||||
self.active = True
|
self.active = True
|
||||||
|
|
||||||
|
|
||||||
@ -209,6 +222,10 @@ class Game:
|
|||||||
self.board_prev.render(surface)
|
self.board_prev.render(surface)
|
||||||
self.board_prev.render_tetrad(surface, self.tetrad_next)
|
self.board_prev.render_tetrad(surface, self.tetrad_next)
|
||||||
|
|
||||||
|
font_text = 'Lines: {0}'.format(self.lines)
|
||||||
|
font_surface = self.font.render(font_text, False, pygame.Color(self.text_color), pygame.Color(self.text_bg_color))
|
||||||
|
surface.blit(font_surface, self.score_position)
|
||||||
|
|
||||||
|
|
||||||
def advance(self, elapsed):
|
def advance(self, elapsed):
|
||||||
if not self.active:
|
if not self.active:
|
||||||
@ -239,7 +256,7 @@ class Game:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
self.board.place_tetrad(self.tetrad)
|
self.board.place_tetrad(self.tetrad)
|
||||||
self.board.settle()
|
self.lines += self.board.settle()
|
||||||
|
|
||||||
self.tetrad = self.tetrad_next.centered(self.board.grid_dims[0])
|
self.tetrad = self.tetrad_next.centered(self.board.grid_dims[0])
|
||||||
self.tetrad_next = Tetrad.random()
|
self.tetrad_next = Tetrad.random()
|
||||||
@ -281,14 +298,10 @@ class Game:
|
|||||||
#
|
#
|
||||||
|
|
||||||
class Engine:
|
class Engine:
|
||||||
def __init__(self):
|
|
||||||
self.surface = None
|
|
||||||
self.game = Game()
|
|
||||||
|
|
||||||
|
|
||||||
def create(self, resolution):
|
def create(self, resolution):
|
||||||
pygame.init()
|
pygame.init()
|
||||||
|
|
||||||
|
self.game = Game()
|
||||||
self.surface = pygame.display.set_mode(resolution, pygame.DOUBLEBUF)
|
self.surface = pygame.display.set_mode(resolution, pygame.DOUBLEBUF)
|
||||||
self.ticks = pygame.time.get_ticks()
|
self.ticks = pygame.time.get_ticks()
|
||||||
|
|
||||||
@ -313,8 +326,6 @@ class Engine:
|
|||||||
|
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
self.surface = None
|
|
||||||
|
|
||||||
if self.joystick is not None:
|
if self.joystick is not None:
|
||||||
self.joystick.quit()
|
self.joystick.quit()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user