diff --git a/app/services/blocks-gallery.js b/app/services/blocks-gallery.js index afe1598d..1c061ac1 100644 --- a/app/services/blocks-gallery.js +++ b/app/services/blocks-gallery.js @@ -346,6 +346,30 @@ export default Service.extend({ argumentos: '{etiqueta: "Pulpito", nombreAnimacion:"rebotarPulpito", animacionInteractuadoMientras: "desaparecer", "mensajeError": "Acá no hay una pelota"}', }) + this.crearBloqueAccion('RevolearPulpito', 'volleyRubberBall', { + icono: 'icono.pelota-pulpo.png', + comportamiento: 'Interactuar', + argumentos: '{etiqueta: "Pulpito", nombreAnimacion:"revolearPulpito", "mensajeError": "Acá no hay una pelota", idTransicion: "revolearPulpito"}', + }) + + this.crearBloqueAccion('RebotarPiePulpito', 'bounceFootRubberBall', { + icono: 'icono.pelota-pulpo.png', + comportamiento: 'Interactuar', + argumentos: '{etiqueta: "Pulpito", nombreAnimacion:"rebotarPulpito", "mensajeError": "Acá no hay una pelota", idTransicion: "rebotarPiePulpito"}', + }) + + this.crearBloqueAccion('RecogerPulpito', 'pickRubberBall', { + icono: 'icono.pelota-pulpo.png', + comportamiento: 'Interactuar', + argumentos: '{etiqueta: "Pulpito", nombreAnimacion: "recoger", animacionInteractuadoMientras: "desaparecer", "mensajeError": "Acá no hay una pelota", idTransicion: "recoger"}', + }) + + this.crearBloqueAccion('RebotarUnaVezPingPong', 'bouncePingPong', { + icono: 'icono.paleta.png', + comportamiento: 'PingPongAnimado', + argumentos: '{mensaje: "Rebotando...", etiqueta: "PingPong", nombreAnimacion:"usarPaletaUnaVez", animacionInteractuadoMientras: "desaparecer" }', + }); + this.crearBloqueAccion('DespertarLuciernaga', 'wakeUpFirefly', { icono: 'icono.luciernaga-prendida.png', comportamiento: 'SacarFoto', @@ -554,6 +578,12 @@ export default Service.extend({ argumentos: '{direccion: [1,0], distancia: 50, idTransicion: "avanzar"}', }); + this.crearBloqueAccion('Retroceder', 'back', { + icono: 'icono.izquierda.png', + comportamiento: 'MovimientoAnimado', + argumentos: '{direccion: [-1,0], distancia: 50, idTransicion: "retroceder"}', + }); + this.crearBloqueAccion('Soniar', 'dream', { icono: 'icono.soniar.png', comportamiento: 'Pensar', diff --git a/app/utils/staticData/desafios.js b/app/utils/staticData/desafios.js index 25d89863..eb660a5b 100644 --- a/app/utils/staticData/desafios.js +++ b/app/utils/staticData/desafios.js @@ -2764,6 +2764,24 @@ export const desafios = [ ` }, { + id: 'nuevo2', + nombre: 'ChuyHaciendoJueguito', + escena: 'ChuyHaciendoJueguito', + bloques: ['Avanzar', 'Retroceder', 'RecogerPulpito', 'RebotarPiePulpito', 'RevolearPulpito', 'Repetir', 'Procedimiento'], + expectations: { + simpleRepetition: false + } + }, + { + id: 'nuevo3', + nombre: 'NoMeCansoDeRebotar', + escena: 'NoMeCansoDeRebotar', + bloques: ['RebotarUnaVezPingPong', 'Procedimiento', 'Repetir'], + expectations: { + decomposition: false + } + }, + { id: 'nuevo4', nombre: 'ManicEnElCielo', escena: `new EscenaManic("\ diff --git a/app/utils/staticData/grupos.js b/app/utils/staticData/grupos.js index c462b3d7..0c6b4397 100644 --- a/app/utils/staticData/grupos.js +++ b/app/utils/staticData/grupos.js @@ -272,6 +272,8 @@ export const grupos = [ { id: 'grupoTemporal', desafioIds: [ + 'nuevo2', + 'nuevo3', 'nuevo4', 'nuevo5', 'nuevo6', diff --git a/package-lock.json b/package-lock.json index d983625c..14d80eb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33036,9 +33036,9 @@ } }, "pilas-bloques-exercises": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/pilas-bloques-exercises/-/pilas-bloques-exercises-1.4.7.tgz", - "integrity": "sha512-TLT5YBblR0MlNYCI+EyAwYo3fTalFFze96aVCjnaQY3nOage837InrUniZsjx071WgIBKHbG6G6x/caB3dqlKg==", + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/pilas-bloques-exercises/-/pilas-bloques-exercises-1.4.13.tgz", + "integrity": "sha512-MnkR1aoXVs1raHSkaT4ESlv+wBXGYy4k5BpboiyfLdn9dZYUiiB+8AnbrFQoSx/GXSOInCfQ9nsd/A/qhaq00Q==", "requires": { "pilasweb": "^0.5.0" } diff --git a/package.json b/package.json index b625813a..fb4063ef 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "creador-de-desafios-pilasbloques": "^1.0.1", "mulang": "^6.0.5", "pilas-bloques-ember-intl": "^1.1.2", - "pilas-bloques-exercises": "1.4.12", + "pilas-bloques-exercises": "1.4.13", "pilasweb": "^0.5.0", "proceds-blockly": "^1.1.0", "ramda": "^0.28.0", diff --git a/public/pilas.html b/public/pilas.html index b372bdfb..d51c8ee5 100644 --- a/public/pilas.html +++ b/public/pilas.html @@ -22,7 +22,7 @@ - + diff --git a/tests/integration/desafios/ChuyHaciendoJueguito-test.js b/tests/integration/desafios/ChuyHaciendoJueguito-test.js new file mode 100644 index 00000000..e826c46d --- /dev/null +++ b/tests/integration/desafios/ChuyHaciendoJueguito-test.js @@ -0,0 +1,22 @@ +import { moduloActividad, actividadTest } from '../../helpers/actividadTest'; + +const nombre = "ChuyHaciendoJueguito"; + +moduloActividad(nombre, () =>{ + + actividadTest(nombre, { + solucion: `CalentarHacerJueguito` + }); + + actividadTest(nombre, { + descripcionAdicional: 'Invirtiendo acciones sigue funcionando la solución', + solucion: `CalentarHacerJueguito"` + }); + + actividadTest(nombre, { + descripcionAdicional: 'Da error al no seguir la secuencia esperada', + solucion: 'CalentarHacerJueguito', + errorEsperado: 'Primero hay que entrar en calor y agarrar la pelota' + }); + +}); \ No newline at end of file diff --git a/tests/integration/desafios/NoMeCansoDeRebotar-test.js b/tests/integration/desafios/NoMeCansoDeRebotar-test.js new file mode 100644 index 00000000..f676048c --- /dev/null +++ b/tests/integration/desafios/NoMeCansoDeRebotar-test.js @@ -0,0 +1,23 @@ +import { moduloActividad, actividadTest } from '../../helpers/actividadTest'; + +const nombre = 'NoMeCansoDeRebotar'; + +moduloActividad(nombre, () => { + + // Solución esperada. Usa el bloque Repetir + actividadTest(nombre, { + solucion: '30', + }); + + // Solución alternativa donde no usa el bloque Repetir y ejecuta 30 bloques saltar seguidos. + actividadTest(nombre, { + solucion: '', + }); + + actividadTest(nombre, { + descripcionAdicional: 'Da error al querer saltar más de 30 veces', + solucion: '31', + errorEsperado: ' ¡Uy! Hice muchos rebotes... ¡Me pasé!', + }); + +}); diff --git a/translations/blocks/en-us.yaml b/translations/blocks/en-us.yaml index 59ba71f4..4f38532a 100644 --- a/translations/blocks/en-us.yaml +++ b/translations/blocks/en-us.yaml @@ -16,6 +16,7 @@ lie: Lie down standUp: Stand up return: Return advance: Move forward +back: Move backward dream: Dream jump: Jump goToLeftBorder: Go to left border @@ -51,6 +52,9 @@ blowUpBallon: Pinch the balloon kickBall: Kick the ball kickFootballBall: Kick the football ball bounceRubberBall: Bounce the rubber ball +volleyRubberBall: Volley the rubber ball +pickRubberBall: Pick the rubber ball +bounceFootRubberBall: Bounce with foot the rubber ball move1Km: Move 1 Km forward changeLightColor: Change spotlight color moveNextLight: Move to next spotlight diff --git a/translations/blocks/es-ar.yaml b/translations/blocks/es-ar.yaml index 92bde7c1..bda1d4a8 100644 --- a/translations/blocks/es-ar.yaml +++ b/translations/blocks/es-ar.yaml @@ -16,6 +16,7 @@ lie: Acostarse standUp: Pararse return: Volver advance: Avanzar +back: Retroceder dream: Soñar jump: Saltar goToLeftBorder: Ir al borde izquierdo @@ -51,6 +52,9 @@ blowUpBallon: Explotar globo kickBall: Patear pelota kickFootballBall: Patear pelota de fútbol bounceRubberBall: Rebotar pelota pulpito +volleyRubberBall: Revolear pelota pulpito +pickRubberBall: Agarrar pelota pulpito +bounceFootRubberBall: Rebotar con el pie la pelota pulpito move1Km: Avanzar 1 Km changeLightColor: Cambiar color del foco moveNextLight: Pasar al siguiente foco diff --git a/translations/blocks/pt-br.yaml b/translations/blocks/pt-br.yaml index 1da95dc5..d68090e6 100644 --- a/translations/blocks/pt-br.yaml +++ b/translations/blocks/pt-br.yaml @@ -16,6 +16,7 @@ lie: 'Deitar-se ' standUp: Levantar-se return: Retornar advance: Avançar +back: Votar dream: Sonhar jump: Saltar goToLeftBorder: Ir para a borda esquerda @@ -51,6 +52,9 @@ blowUpBallon: Explodir balão kickBall: Chutar bola kickFootballBall: Chutar bola de futebol bounceRubberBall: Chutar bola pulpito +volleyRubberBall: Voleio uma bola pulpito +pickRubberBall: Pegar uma bola pulpito +bounceFootRubberBall: Chutar com ó pe uma bola pulpito move1Km: Avançar 1 Km changeLightColor: Mudar a cor da lâmpada moveNextLight: Ir para a próxima lâmpada diff --git a/translations/en-us.yaml b/translations/en-us.yaml index 911387f9..f20ca4d3 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -663,6 +663,15 @@ model: Tenemos un programa ya hecho para que toto lea la provincia que está al sur de rio negro. Fijate si funciona o qué hay que arreglar. clue: Con el botón 'PASO' Toto puede ir realizando las instrucciones una por una + 'nuevo2': + title: Chuy keepie-uppie + description: 'Make Chuy take a step forward, warm up moving back and forth, pick up the rubber ball, do keepie-uppie flipping the ball and bouncing it with the foot and finally come back to the original place.' + clue: You can create new actions in _My procedures_ by defining new blocks including other actions. + 'nuevo3': + title: I love bouncing the ping pong ball + description: | + Help Chuy bounce the ping pong ball 30 times non-stop. Clue: you can solve this challenge with less than 30 blocks. + clue: The Repeat block allows you to select the number of times you want to repeat a sequence of actions. This is called "Simple repetition". 'nuevo4': title: Mañic in sky description: | diff --git a/translations/es-ar.yaml b/translations/es-ar.yaml index 5fa9c01c..18266e03 100644 --- a/translations/es-ar.yaml +++ b/translations/es-ar.yaml @@ -665,6 +665,15 @@ model: Tenemos un programa ya hecho para que toto lea la provincia que está al sur de rio negro. Fijate si funciona o qué hay que arreglar. clue: Con el botón 'PASO' Toto puede ir realizando las instrucciones una por una + 'nuevo2': + title: Chuy haciendo jueguito + description: 'Hacé que Chuy avance un paso, entre en calor avanzando y retrocediendo, recoja la pelota pulpito, haga jueguito revoleando la pelota y rebotandola con el pie y por ultimo vuelva a su lugar.' + clue: Se pueden crear nuevas acciones en Procedimientos definiendo nuevos bloques que incluyan otras acciones. + 'nuevo3': + title: No me canso de rebotar + description: | + Ayudá a Chuy a hacer rebotar la pelota de ping pong 30 veces seguidas. Pista: se puede resolver con menos de 30 bloques. + clue: El bloque Repetir permite elegir la cantidad de veces que se desea repetir una secuencia de acciones. Esto se llama "Repetición simple". 'nuevo4': title: Mañic en el cielo description: | diff --git a/translations/pt-br.yaml b/translations/pt-br.yaml index fa5656dc..e39bcfba 100644 --- a/translations/pt-br.yaml +++ b/translations/pt-br.yaml @@ -649,6 +649,15 @@ model: Já temos um programa feito para o Toto ler a província que fica ao sul do Rio Negro. Veja se funciona ou o que precisa ser corrigido. clue: A província é Chubut. Com o botão 'PASSO' o Toto pode executar as instruções uma a uma + 'nuevo2': + title: Chuy joga uma embaixadinha + description: Faça que Chuy dê um passo à frente, aqueça-se movendo-se para frente e para trás, pegue a bola pulpito, jogue uma embaixadinha virando a bola e quicando-a com o pé e, finalmente, retorne ao seu lugar. + clue: Novas ações podem ser criadas em Procedimentos definindo novos blocos que incluem outras ações. + 'nuevo3': + title: Eu adoro quicar a bola de pingue-pongue + description: | + Ajude Chuy a quicar a bola de pingue-pongue 30 vezes seguidas. Dica: pode ser resolvido com menos de 30 blocos. + clue: O bloco Repetir permite que você escolha o número de vezes que deseja repetir uma sequência de ações. Isso é chamado de "Repetição Simples". 'nuevo4': title: Mañic en el cielo description: |