Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug - lata gigante #67

Merged
merged 2 commits into from
Feb 23, 2024
Merged

Bug - lata gigante #67

merged 2 commits into from
Feb 23, 2024

Conversation

dlopezalvas
Copy link
Contributor

Resolves Program-AR/pilas-bloques-app#232

¿Qué estaba pasando 🤔?

El código que se usaba en cualquier ejercicio que tenga recoger lata es este:

private desapareceLata(): void {
this.objetoInteractuado().hacer(Achicar, {
velocidad: 0.08
})
}

Achicar implica que suceda esto:

this.contador = (this.contador + this.velocidad)
this.receptor.setAlto(this.receptor.getAlto() - this.contador);
this.receptor.setAncho(this.receptor.getAncho() - this.contador);
if (this.elReceptorSeAchico()) {
this.receptor.eliminar()
}

Y la forma en que se fija si ya se achico es esta:

elReceptorSeAchico(): boolean {
return this.receptor.getAncho() <= 1
}

Esto funciona bien siempre y cuando la diferencia entre el ancho y alto de la lata sea poca (caso que asumo sucede en los demás ejercicios de Capy recogiendo latas). Pero cuando el ancho es bastante mayor al alto, lo que pasa es que al momento en que el alto es menor a 1, como el ancho todavía no lo es sigue restando el valor del contador:

imagen

Como se puede ver en la imagen, cuando el alto llega a menos de 1, pero el ancho todavía no, hace la cuenta que resulta en aprox -1,824 (valor que queda positivo al setearse el alto).

Si bien el objeto ya debería haber desaparecido, el contador sigue aumentando hasta que el ancho también quede en menor a 1, pero al momento en que debería llegar, la resta termina dando también negativa y menor a -1, haciendo que nunca se cumpla elReceptorSeAchico.

Por esto es que se solucionaba si se le sacaba una de las filas del mapa: cambiaba el alto y el ancho de las latas lo suficiente para que no haya demasiada diferencia entre el ancho y el alto y zafara del bug.

Cambiando el método que dice si se achica para que chequee el alto además del alto, no debería pasar esto de nuevo, sin embargo habría que tener en cuenta a futuro si se vuelve a usar Achicar que la velocidad no sea demasiado alta para que suceda de nuevo el tema de que se reste de más. Para que no pase eso, también agregué el max(0, resta), cosa que si es negativo siempre quede en 0, haciendo que no hayan chances de que vuelva a pasar el bug.

Así se ve el ejercicio con la solución que nos mandaron:

capy

Copy link
Contributor

@danielferro69 danielferro69 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hermoso !! Que bueno que lo encontraste !!! 💯

@dlopezalvas dlopezalvas merged commit ebab2b8 into master Feb 23, 2024
2 checks passed
@dlopezalvas dlopezalvas deleted the fixing-giant-lata branch February 23, 2024 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Las latas de Capy se hacen gigantes
2 participants