Exemple #1
0
class App:
    def __init__(self):
        # self.running = True
        self.block_size = 50
        self.block_count = (10, 15)
        self.res = (self.block_count[0] * self.block_size,
                    self.block_count[1] * self.block_size)
        self.decor_grid = [
            pygame.Rect(x * self.block_size, y * self.block_size,
                        self.block_size, self.block_size)
            for x in range(self.block_count[0])
            for y in range(self.block_count[1])
        ]

        self.figures_grid = [[0 for x in range(self.block_count[0] + 2)]
                             for y in range(self.block_count[1])]

        self.screen = pygame.display.set_mode(self.res)
        self.figure = Figure(self.screen, self.block_size, self.block_count,
                             self.figures_grid)
        self.keys = None
        self.clock = pygame.time.Clock()
        pygame.init()
        # [pygame.draw.rect(self.screen, (255, 255, 255), block, 1) for block in self.grid]
        # self.figure.draw()
        # pygame.display.flip()

    # figure1 = [[(-1, -1), (-2, -1), (0, -1), (1, -1)]]
    # figure1 = [[(0, -1), (0, -2), (1, -2), (0, 0)]]

    # def move():
    #     for i in range(4):
    #         figure2[i].y += 1

    def event_loop(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()

            elif event.type in (pygame.KEYDOWN, pygame.KEYUP):
                self.keys = pygame.key.get_pressed()

    def update(self, dt):
        self.figure.update(self.keys, dt)
        # self.figure.update(self.keys)
        # self.figure.figure[0].y += 1
        # a = deepcopy(self.figure)
        # self.figure.update(self.keys)
        # self.figure.move()
        # self.figure.move()
        # self.figure.check_borders()
        # self.figure.move_with_check_borders()

    # if figure2[0].y * self.block_size >= blocks_count[1] * block_size:
    #     figure2 = a

    def render(self):
        self.screen.fill(pygame.Color('black'))
        [
            pygame.draw.rect(self.screen, (255, 255, 255), block, 1)
            for block in self.decor_grid
        ]
        self.figure.draw()
        self.draw_finished_figures()

        pygame.display.flip()

    def draw_finished_figures(self):
        for y, row in enumerate(self.figures_grid):
            for x, column in enumerate(row):
                if column:
                    # pygame.draw.rect(self.screen, (255, 255, 255), pygame.Rect(x, y, 50, 50), 50)
                    # self.rect.x = self.figure[i].x * self.block_size
                    # self.rect.y = self.figure[i].y * self.block_size
                    self.figure.rect.x, self.figure.rect.y = x * self.block_size, y * self.block_size
                    pygame.draw.rect(self.screen, (255, 255, 255),
                                     self.figure.rect)

    def run(self):
        self.keys = pygame.key.get_pressed()
        while True:
            dt = self.clock.tick(5)
            # print(dt)
            self.event_loop()
            self.update(dt)
            self.render()