diff --git a/package-lock.json b/package-lock.json
index 1685f7a..660b2e3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "pilas-bloques-exercises",
- "version": "1.4.14",
+ "version": "1.4.15",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 75efc5c..528ebc4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "pilas-bloques-exercises",
- "version": "1.4.14",
+ "version": "1.4.15",
"description": "Exercises for Pilas Bloques",
"homepage": "http://pilasbloques.program.ar",
"author": {
diff --git a/src/actores/segundoCiclo/Capy/Tacho.ts b/src/actores/segundoCiclo/Capy/Tacho.ts
index b7b057b..7cb3d38 100644
--- a/src/actores/segundoCiclo/Capy/Tacho.ts
+++ b/src/actores/segundoCiclo/Capy/Tacho.ts
@@ -1,15 +1,30 @@
///
class Tacho extends ActorAnimado {
+ lleno;
static _grilla = 'actor.tacho.png'
constructor(lleno = false) {
super(0, 0, {cantColumnas: 2});
this.definirAnimacion("vacio", [0], 1);
this.definirAnimacion("lleno", [1], 1);
-
+ this.lleno = lleno;
if(lleno)
this.cargarAnimacion("lleno")
else
this.cargarAnimacion("vacio")
}
+
+ vaciar() {
+ this.cargarAnimacion("vacio")
+ this.lleno = false;
+ }
+
+ llenar() {
+ this.cargarAnimacion("lleno")
+ this.lleno = true;
+ }
+
+ estaLleno(): boolean {
+ return this.lleno;
+ }
}
diff --git a/src/escenas/ReciclandoPapeles.ts b/src/escenas/ReciclandoPapeles.ts
new file mode 100644
index 0000000..531d5ad
--- /dev/null
+++ b/src/escenas/ReciclandoPapeles.ts
@@ -0,0 +1,88 @@
+///
+///
+///
+///
+///
+
+class ReciclandoPapeles extends EscenaActividad {
+ cuadricula : CuadriculaMultiple;
+ definidor: DefinidorColumnasFijo;
+ automata;
+ tachos;
+ papeles;
+
+ iniciar() {
+ this.fondo = new Fondo('fondo.capy.png',0,0);
+ this.definidor = new DefinidorColumnasFijo(5,[5,6,8,4,7]);
+ this.cuadricula = new CuadriculaMultiple(
+ this.definidor,
+ 0,0,
+ {separacionEntreCasillas: 5},
+ {grilla:'casilla.futbolRobots2.png',
+ cantFilas: 5,
+ cantColumnas: 16,
+ alto:45,ancho:45}
+ );
+ this.cuadricula.cambiarImagenInicio('casillainiciomono.png');
+
+ var capy = new Capy()
+ capy.escala *= 0.5;
+ this.automata = new ActorCompuesto(0, 0, { subactores: [capy] });
+ this.cuadricula.agregarActor(this.automata, 0, 0);
+ this.automata.escala *= 0.3;
+ this.automata.y += 40;
+
+ this.papeles=[]
+ this.tachos=[]
+
+ this.cuadricula.forEachFila((nroFila: number) => this.agregarTacho(nroFila))
+ this.cuadricula.forEachFila((nroFila: number) => this.agregarPapel(nroFila))
+
+ }
+
+ agregarPapel(fila: number) {
+ var elPapel = new Papel()
+ this.cuadricula.agregarActor(elPapel, fila, 0)
+ elPapel.aprender(Flotar, { Desvio: 2 });
+ this.papeles.push( new ActorCompuesto(0, 0, { subactores: [elPapel] }));
+ }
+
+ agregarTacho(fila: number) {
+ var elTacho = new Tacho()
+ this.cuadricula.agregarActor(elTacho, fila, this.definidor.tamanos[fila]-1)
+ this.tachos.push( new ActorCompuesto(0, 0, { subactores: [elTacho] }));
+ this.tachos.escala *= 0.8;
+ }
+
+ estaResueltoElProblema(){
+ return this.hayTachosLlenosAlFinalDeLasFilas() && this.cuadricula.cantFilas === this.cantidadDeTachosLlenos() && !this.cantidadDePapelesSinLevantar();
+ }
+
+ hayTachosLlenosAlFinalDeLasFilas(){
+ return this.tachos.every( tacho => tacho.subactores[0].estaLleno() );
+ }
+
+ cantidadDePapelesSinLevantar(): number {
+ var cant: number = 0;
+ this.papeles.forEach( papel => cant += papel.subactores[0].vivo );
+ return cant;
+ }
+
+ cantidadDeTachosLlenos(): number {
+ var cant: number = 0;
+ this.tachos.forEach( tacho => cant += tacho.subactores[0].estaLleno() );
+ return cant;
+ }
+
+ ultimasCasillas(){
+ return this.cuadricula.filterCasillas(casilla => casilla.esFin());
+ }
+
+ actualizar(): void {
+ super.actualizar();
+ if( !this.tachos[this.automata.casillaActual().nroFila].subactores[0].estaLleno() &&
+ this.automata.tieneAlgoEnLaMano() &&
+ this.automata.casillaActual() === this.tachos[this.automata.casillaActual().nroFila].subactores[0].casillaActual() )
+ this.tachos[this.automata.casillaActual().nroFila].subactores[0].llenar();
+ }
+}