Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Lógica de programação

Bom dia,

Eu não consegui entender como o lado esquerdo do objeto B pode ser maior que o lado direito do objeto A. Sendo que os dois objetos tem o mesmo tamanho em quantidade de pixel.

 if ladoEsquerdoDoB > ladoDireitoDoA or
        ladoDireitoDoB < ladoEsquerdoDoA then

Abraço,

2 respostas
solução

Oi Rodolfo,

Realmente os dois quadrados tem o mesmo tamanho, mas nesse ponto não estamos falando do tamanho de cada quadrado. Estamos verificando as posições deles.

Para dois quadrados colidirem precisamos verificar se as as posições deles se encontram. Fica mais fácil se pensarmos em apenas um eixo pirmeiro

Imagina que temos um quadrado que está na posição x = 4 e tem 16 de tamanho. Dentro do eixo X ele está ocupando o espaço que vai do 4 até o 20 (4+16), correto?

Se tivermos um outro quadrado q está na posição 25 e tem 16 de tamanho, então ele ocupa o intervalo que vai do 25 até o 41(25+16).

Nesse caso os quadrados não estão colidindo, porque os intervalos que eles ocupam não se "tocam".

Mas e se o segundo quadrado for para a posição 17 no eixo, eles estão colidindo?

Sim, porque um quadrado ocupa o intervado 4-20 e outro ocupa o 17-33. Quando o instrutor coloca ladoEsquerdoB > ladoDireitoA ele está se referindo a esses valores.

ladoEsquerdoA = 4 ladoDireitoA = 20 ladoEsquerdoB = 17 ladoDireitoB = 33

Deu pra entender melhor?

Deu sim Ricardo,

Vlw!!