Tenho que sair em alguns minutos então não pude dar uma olhada aprofundada no seu código, mas algo que eu notei de cara é a falta de padrão ao nomear as variáveis. Algumas estão em português, outras em inglês. Algumas estão em camelCase, outras em PascalCase e algumas até mesmo em lowercase. Nomear as coisas sem um padrão desse jeito é uma prática ruim porque costuma dar problemas quando o código começa a crescer ou quando você começa a trabalhar em grupo. Recomendo a você usar a convenção usada na própria STL do C++, ou a convenção que a Google usa para códigos em C++. Claro, sempre tem a opção de vc usar/modificar outra convenção ou até mesmo criar a sua própria, mas é bom que ela seja ao menos consistente e autoexplicativa pra voçê não ter problemas depois. (encare isso como uma critica construtiva)

Se der tempo, de noite eu dou mais uma olhada...

realmente eu não consigo manter uma consistência ao criar nomes de variáveis, também tenho receio de criar variáveis com nomes muito grandes, mas vou tentar manter a consistência

(curiosidade: eu escrevi as variáveis doorleft e doorrigth em Ingles, porque eu tenho dificuldade em distinguir esquerda e direita 😑)

valeu pela dica