Hola a todos, decubrí un pequeño e insignificante bug con la función cada_segundo y su parámetro segundos.
Al utilizar la función de la siguiente forma:
cada_segundo(segundos:number) {
if (this.pilas.es_multiplo(2, segundos)) {
this.decir(segundos.toString() + " es múltiplo de 2");
}
else {
this.decir(segundos.toString());
}
}
El actor va decir “es múltiplo de 2” cuando hayan transcurridos 2 y 4 segundos, pero de 6 en adelante ya no lo va decir. De hecho, el condicional se ejecuta como falso para 6,8,10,12… cuando no debería ser así. Esto sucede sin importar si es con cada 2 o 3 segundos, siempre a partir de 6 segundos parece que el condicional se vuelve falso.
SI en cambio usamos:
cada_segundo(segundos:number){
if(this.pilas.es_multiplo(segundos,3)){
this.decir(segundos.toString() + " es múltiplo de 3")
}
else {
this.decir(segundos.toString());
}
}
El error de antes se arregla. El problema parece estar en si el primer parámetro de this.pilas.es_multiplo()
es segundos o no.
En el siguiente proyecto a cada actor le puse uno de los códigos de antes. A partir de los 6 segundos la aceituna deja de reconocer los múltiplos:
Abrir este proyecto en el editor de pilas