Free Friday 3/20/26

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

CATEGORIES:

Tags:

No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *