1
resposta

TypeError: list indices must be integers or slices, not float

Referente a essa parte do código:

def calcular_regras(self):
    col = self.pacman.coluna_intencao
    lin = self.pacman.linha_intencao
    if 0 <= col < 28 and 0 <= lin < 29:
        if self.matriz[lin][col] != 2:
            self.pacman.aceitar_movimento()


Agora, se eu transformo 'col' e 'lin' em ints, o jogo roda, porém o 'pacman' não fica centralizado nos corredores.
Ex:

    def calcular_regras(self):
    col = int(self.pacman.coluna_intencao)
    lin = int(self.pacman.linha_intencao)
    if 0 <= col < 28 and 0 <= lin < 29:
        if self.matriz[lin][col] != 2:
            self.pacman.aceitar_movimento()
1 resposta

Olá Alan, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Efetuando os testes com o código apresentado, o código foi executado normalmente não apresentando o erro de tipo (TypeError).

  • Peço que envie o código completo, para que sejam realizados os testes sobre o erro, com o código completo.

Quanto ao Pacman iniciando fora do centro do corredor.

Peço que confirme os valores do método inicializador da classe Pacman, confirme se os valores dos atributos self.coluna eself.linha estão com o valor 1. Caso esses valores estejam diferentes o Pacman iniciará fora do corretor.

Método Para comparação

class Pacman:
    def __init__(self, tamanho):
        self.coluna = 1
        self.linha = 1
        self.centro_x = 400
        self.centro_y = 300
        self.tamanho = tamanho
        self.vel_x = 0
        self.vel_y = 0
        self.raio = self.tamanho // 2
        self.coluna_intencao = self.coluna
        self.linha_intencao = self.linha
  • Caso o método inicializador esteja conforme apresentado acima, e o erro continue, peço que envie o seu código completo, para que eu possa realizar os testes e lhe auxiliar da melhor forma possível.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!