Today in class, I continued my Tetris game.

This is the code for the blocks
class LBlock(Block):
def __init__(self):
super().__init__(id=1)
self.cells = {
0: [Position(0, 2), Position(1, 0), Position(1, 1), Position(1, 2)],
1: [Position(0, 1), Position(1, 1), Position(2, 1), Position(2, 2)],
2: [Position(1, 0), Position(1, 1), Position(1, 2), Position(2, 0)],
3: [Position(0, 0), Position(0, 1), Position(1, 1), Position(2, 1)],
}
self.move(0, 3)
class JBlock(Block):
def __init__(self):
super().__init__(id=2)
self.cells = {
0: [Position(0, 0), Position(1, 0), Position(1, 1), Position(1, 2)],
1: [Position(0, 1), Position(0, 2), Position(1, 1), Position(2, 1)],
2: [Position(1, 0), Position(1, 1), Position(1, 2), Position(2, 2)],
3: [Position(0, 1), Position(1, 1), Position(2, 0), Position(2, 1)],
}
self.move(0, 3)
class IBlock(Block):
def __init__(self):
super().__init__(id=3)
self.cells = {
0: [Position(1, 0), Position(1, 1), Position(1, 2), Position(1, 3)],
1: [Position(0, 2), Position(1, 2), Position(2, 2), Position(3, 2)],
2: [Position(2, 0), Position(2, 1), Position(2, 2), Position(2, 3)],
3: [Position(0, 1), Position(1, 1), Position(2, 1), Position(3, 1)],
}
self.move(0, 3)
class OBlock(Block):
def __init__(self):
super().__init__(id=4)
self.cells = {
0: [Position(0, 0), Position(0, 1), Position(1, 0), Position(1, 1)],
}
self.move(0, 4)
class SBlock(Block):
def __init__(self):
super().__init__(id=5)
self.cells = {
0: [Position(0, 1), Position(0, 2), Position(1, 0), Position(1, 1)],
1: [Position(0, 1), Position(1, 1), Position(1, 2), Position(2, 2)],
2: [Position(1, 1), Position(1, 2), Position(2, 0), Position(2, 1)],
3: [Position(0, 0), Position(1, 0), Position(1, 1), Position(2, 1)],
}
self.move(0, 3)
class TBlock(Block):
def __init__(self):
super().__init__(id=6)
self.cells = {
0: [Position(0, 1), Position(1, 0), Position(1, 1), Position(1, 2)],
1: [Position(0, 1), Position(1, 1), Position(1, 2), Position(2, 1)],
2: [Position(1, 0), Position(1, 1), Position(1, 2), Position(2, 1)],
3: [Position(0, 1), Position(1, 0), Position(1, 1), Position(2, 1)],
}
self.move(0, 3)
class ZBlock(Block):
def __init__(self):
super().__init__(id=7)
self.cells = {
0: [Position(0, 0), Position(0, 1), Position(1, 1), Position(1, 2)],
1: [Position(0, 2), Position(1, 1), Position(1, 2), Position(2, 1)],
2: [Position(1, 0), Position(1, 1), Position(2, 1), Position(2, 2)],
3: [Position(0, 1), Position(1, 0), Position(1, 1), Position(2, 0)],
}
self.move(0, 3)
This is the code for the keys
while True: # game loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
game.move_left()
if event.key == pygame.K_RIGHT:
game.move_right()
if event.key == pygame.K_DOWN:
game.move_down()
if event.key == pygame.K_UP:
game.rotate()
if event.type == GAME_UPDATE:
Game.move_down()
This is the code that keeps the blocks inside the game
def block_inside(self):
tiles = self.current_block.get_cell_positions()
for tile in tiles:
if not self.grid.is_inside(tile.row, tile.column):
return False
return True
This is the code that rotates the blocks
def rotate(self):
self.current_block.rotate()
if not self.block_inside() or not self.block_fits():
Self.current_block.undo_rotation()
This is the code that undo’s the rotation
def undo_rotation(self):
self.rotation_state -= 1
if self.rotation_state < 0:
self.rotation_state = len(self.cells) - 1
No Responses