Ep 1 - Função - Pos_ocupada

Ep 1 - Função - Pos_ocupada

por Carlos Alberto Chaves -
Número de respostas: 1

Estou com um problema na função pos_ocupada, quando minha cobrinha passa têm um tamanho maior do que 4, não sei o que fazer... pelo que eu olhei não tem nenhuma condição que esteja "limitando" o tamanho da cobra, essa função está complicando minha vida hahah

Se alguém tiver alguma luz no que pode estar errado.

Anexo saida errada.jpg
Em resposta à Carlos Alberto Chaves

Re: Ep 1 - Função - Pos_ocupada

por Marcelo Queiroz -

Olá, Carlos Alberto!

Talvez o mais rápido a fazer no seu caso seja levar a depuração diretamente até o ponto em que o último tabuleiro produz um "." (à esquerda da cabeça) onde deveria ser um "*", ou em outras palavras, ver o que está acontecendo com a chamada da função pos_ocupada com os argumentos (10,10,7,8,8,8,2222). Como essa função deveria rastrear o corpo da cobrinha a partir da posição (x0,y0) da cabeça, logo no primeiro passo do seu laço ela deveria perceber que a posição (7,8) está ocupada. Quem indica isso é o último dígito 2 (=direita) da variável d, que ao refazer o percurso ao contrário a partir da cabeça seria interpretado como um passo "para a esquerda", ou seja, para a posição (7,8), quando a função pos_ocupada deveria devolver True.

Para fazer essa depuração há várias maneiras: você pode adicionar um "if x==7 and y==8:" com um "print()" apenas para adicionar um breakpoint nesse ponto da execução, ou você poderia incluir uma chamada para "pos_ocupada(10,10,7,8,8,8,2222)" no início do seu código só para isolar essa situação (sem passar pelo resto do programa). Pode ajudar também acrescentar alguns "prints" com valores intermediários que você não tem ainda certeza se estão sendo corretamente computados ou não.

Ah, e lembre-se de imprimir a moldura do tabuleiro ("#").

Bom trabalho,

Marcelo