Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

@staticmethod

Eu estava revisando o meu código e vi que o pycharm me sugeriu alterar o pintar_texto_centro para um método estático. Isso seria uma má prática?

    def pintar(self, tela):
        if self.estado == "JOGANDO":
            self.pintar_jogando(tela)
        elif self.estado == "PAUSADO":
            self.pintar_jogando(tela)
            self.pintar_pausado(tela)
        elif self.estado == "GAMEOVER":
            self.pintar_jogando(tela)
            self.pintar_gameover(tela)
        elif self.estado == "VITORIA":
            self.pintar_jogando(tela)
            self.pintar_vitoria(tela)

    def pintar_vitoria(self, tela):
        self.pintar_texto_centro(tela, "P A R A B É N S   V O C Ê   V E N C E U ! ! !")

    @staticmethod
    def pintar_texto_centro(tela, texto):
        texto_img = fonte.render(texto, True, AMARELO)
        texto_x = (tela.get_width() - texto_img.get_width()) // 2
        texto_y = (tela.get_height() - texto_img.get_height()) // 2
        tela.blit(texto_img, (texto_x, texto_y))

    def pintar_gameover(self, tela):
        self.pintar_texto_centro(tela, "G A M E   O V E R")

    def pintar_pausado(self, tela):
        self.pintar_texto_centro(tela, "P A U S A D O")

    def pintar_jogando(self, tela):
        for numero_linha, linha in enumerate(self.matriz):
            self.pintar_linha(tela, numero_linha, linha)
        self.pintar_score(tela)

    def get_direcoes(self, linha, coluna):
        direcoes = []
        if self.matriz[int(linha - 1)][int(coluna)] != 2:
            direcoes.append(ACIMA)
        if self.matriz[int(linha + 1)][int(coluna)] != 2:
            direcoes.append(ABAIXO)
        if self.matriz[int(linha)][int(coluna - 1)] != 2:
            direcoes.append(ESQUERDA)
        if self.matriz[int(linha)][int(coluna + 1)] != 2:
            direcoes.append(DIREITA)
        return direcoes

isso é um trecho do código

1 resposta
solução!

Ao utilizar o decorador @staticmethod você facilita, a outros programadores que trabalham no mesmo projeto, identificarem que o referido método é estático, isto é, poderia ser uma função fora da classe. Apesar dos métodos estáticos poderem ser declarados como funções, não se constituí boa prática misturar o paradigma OO com o paradigma estruturado, portanto o ideal e deixá-lo como método e fazer uso do decorador conforme a IDE recomendou.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software