From aca87e93bd10dc3015e9324474249d0d8104c38c Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 5 Oct 2023 11:27:22 -0300 Subject: [PATCH 1/8] NoMeCansoDeRebotar --- app/services/blocks-gallery.js | 30 ++++++++++++++++++++++++++++++ app/utils/staticData/desafios.js | 18 ++++++++++++++++++ app/utils/staticData/grupos.js | 2 ++ translations/blocks/en-us.yaml | 4 ++++ translations/blocks/es-ar.yaml | 4 ++++ translations/blocks/pt-br.yaml | 4 ++++ translations/en-us.yaml | 9 +++++++++ translations/es-ar.yaml | 9 +++++++++ translations/pt-br.yaml | 9 +++++++++ 9 files changed, 89 insertions(+) diff --git a/app/services/blocks-gallery.js b/app/services/blocks-gallery.js index 661440cc1..5f7ec3604 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', @@ -548,6 +572,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 33c8e1ffb..476682793 100644 --- a/app/utils/staticData/desafios.js +++ b/app/utils/staticData/desafios.js @@ -2725,6 +2725,24 @@ export const desafios = [ ` }, { + id: 'nuevo2', + nombre: 'ChuyHaciendoJueguito', + escena: 'ChuyHaciendoJueguito', + bloques: ['Avanzar', 'Volver', '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 798cf23c2..321133f03 100644 --- a/app/utils/staticData/grupos.js +++ b/app/utils/staticData/grupos.js @@ -265,6 +265,8 @@ export const grupos = [ id: 'grupoTemporal', desafioIds: [ 'nuevo46', + 'nuevo2', + 'nuevo3', 'nuevo4', 'nuevo5', 'nuevo6', diff --git a/translations/blocks/en-us.yaml b/translations/blocks/en-us.yaml index b605ebec0..76e31ca47 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 943b3d7ce..dcc20523a 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 1da95dc51..d68090e6f 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 9cfc76ddc..a31f0060f 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -649,6 +649,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 98ac2aa7d..6aab9402d 100644 --- a/translations/es-ar.yaml +++ b/translations/es-ar.yaml @@ -660,6 +660,15 @@ model: description: | El carpincho Capy y su inseparable amigo, el picabuey Guyrá, tienen una forma muy particular de recorrer los esteros. Ayudá a Capy a pasar a buscar a su amigo para subirlo a su cabeza y así emprender juntos una nueva aventura. clue: 'Fijate bien el orden de las primitivas: qué cosa tenés que hacer primero y qué cosa va después.' + '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 f42146403..dd096b1aa 100644 --- a/translations/pt-br.yaml +++ b/translations/pt-br.yaml @@ -639,6 +639,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: | From 94532ab51d37dc6a3946145ea63afec424fe92e3 Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 5 Oct 2023 13:12:02 -0300 Subject: [PATCH 2/8] tests --- app/services/blocks-gallery.js | 2 +- .../desafios/ChuyHaciendoJueguito-test.js | 16 +++++++++++++ .../desafios/NoMeCansoDeRebotar-test.js | 23 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/integration/desafios/ChuyHaciendoJueguito-test.js create mode 100644 tests/integration/desafios/NoMeCansoDeRebotar-test.js diff --git a/app/services/blocks-gallery.js b/app/services/blocks-gallery.js index 5f7ec3604..e1bb28923 100644 --- a/app/services/blocks-gallery.js +++ b/app/services/blocks-gallery.js @@ -362,7 +362,7 @@ export default Service.extend({ 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', diff --git a/tests/integration/desafios/ChuyHaciendoJueguito-test.js b/tests/integration/desafios/ChuyHaciendoJueguito-test.js new file mode 100644 index 000000000..dd87353e4 --- /dev/null +++ b/tests/integration/desafios/ChuyHaciendoJueguito-test.js @@ -0,0 +1,16 @@ +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"` + }); + +}); \ 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 000000000..f676048cf --- /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é!', + }); + +}); From cf5287b87afad86aaa99938b46c58f9b91119dec Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 5 Oct 2023 14:03:08 -0300 Subject: [PATCH 3/8] exercises --- package-lock.json | 6 +++--- package.json | 2 +- public/pilas.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43a1d860c..55a6e40e4 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.8", + "resolved": "https://registry.npmjs.org/pilas-bloques-exercises/-/pilas-bloques-exercises-1.4.8.tgz", + "integrity": "sha512-g/BLtu9ts63eSyIWioeVM3NFHjt9Ln/xXShYiG/1n8ST5K7AOgafoOjds1tYtpAbdqAf0KCIp9sXOLDoRn5M+A==", "requires": { "pilasweb": "^0.5.0" } diff --git a/package.json b/package.json index 54375148d..657aeb41d 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.7", + "pilas-bloques-exercises": "1.4.8", "pilasweb": "^0.5.0", "proceds-blockly": "^1.1.0", "ramda": "^0.28.0", diff --git a/public/pilas.html b/public/pilas.html index b372bdfb7..ff7f121b9 100644 --- a/public/pilas.html +++ b/public/pilas.html @@ -22,7 +22,7 @@ - + From a72ae74956b2beb448007ad4334bceaeb6fdf2e5 Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 5 Oct 2023 14:10:46 -0300 Subject: [PATCH 4/8] fix merge tom --- translations/es-ar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/es-ar.yaml b/translations/es-ar.yaml index 31fe5ac99..2e0cdfaa9 100644 --- a/translations/es-ar.yaml +++ b/translations/es-ar.yaml @@ -659,7 +659,7 @@ model: title: Capy y Guyrá description: | El carpincho Capy y su inseparable amigo, el picabuey Guyrá, tienen una forma muy particular de recorrer los esteros. Ayudá a Capy a pasar a buscar a su amigo para subirlo a su cabeza y así emprender juntos una nueva aventura. - clue: 'Fijate bien el orden de las primitivas: qué cosa tenés que hacer primero y qué cosa va después.' + clue: 'Fijate bien el orden de las _primitivas_: qué cosa tenés que hacer primero y qué cosa va después.' '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.' From 556c49add2e49809e102075b3d25bd4aa2804907 Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 5 Oct 2023 15:35:14 -0300 Subject: [PATCH 5/8] fix test --- app/utils/staticData/grupos.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/utils/staticData/grupos.js b/app/utils/staticData/grupos.js index fd67fc715..52e3f46cc 100644 --- a/app/utils/staticData/grupos.js +++ b/app/utils/staticData/grupos.js @@ -268,7 +268,6 @@ export const grupos = [ { id: 'grupoTemporal', desafioIds: [ - 'nuevo46', 'nuevo2', 'nuevo3', 'nuevo4', From 2e42a6ba5238da99903621c423a5d11b46d9ef4a Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Thu, 19 Oct 2023 10:35:24 -0300 Subject: [PATCH 6/8] add error test --- tests/integration/desafios/ChuyHaciendoJueguito-test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/integration/desafios/ChuyHaciendoJueguito-test.js b/tests/integration/desafios/ChuyHaciendoJueguito-test.js index dd87353e4..b6f8573b0 100644 --- a/tests/integration/desafios/ChuyHaciendoJueguito-test.js +++ b/tests/integration/desafios/ChuyHaciendoJueguito-test.js @@ -13,4 +13,10 @@ moduloActividad(nombre, () =>{ 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 From 882b96c16846a6e16668d5cb04eb1635c8ade01d Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Fri, 20 Oct 2023 14:58:00 -0300 Subject: [PATCH 7/8] Volver x Retroceder y Teststs --- app/utils/staticData/desafios.js | 2 +- tests/integration/desafios/ChuyHaciendoJueguito-test.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/utils/staticData/desafios.js b/app/utils/staticData/desafios.js index d7829cc35..9a2706dd3 100644 --- a/app/utils/staticData/desafios.js +++ b/app/utils/staticData/desafios.js @@ -2750,7 +2750,7 @@ export const desafios = [ id: 'nuevo2', nombre: 'ChuyHaciendoJueguito', escena: 'ChuyHaciendoJueguito', - bloques: ['Avanzar', 'Volver', 'Retroceder', 'RecogerPulpito', 'RebotarPiePulpito', 'RevolearPulpito', 'Repetir', 'Procedimiento'], + bloques: ['Avanzar', 'Retroceder', 'RecogerPulpito', 'RebotarPiePulpito', 'RevolearPulpito', 'Repetir', 'Procedimiento'], expectations: { simpleRepetition: false } diff --git a/tests/integration/desafios/ChuyHaciendoJueguito-test.js b/tests/integration/desafios/ChuyHaciendoJueguito-test.js index b6f8573b0..e826c46d1 100644 --- a/tests/integration/desafios/ChuyHaciendoJueguito-test.js +++ b/tests/integration/desafios/ChuyHaciendoJueguito-test.js @@ -5,17 +5,17 @@ const nombre = "ChuyHaciendoJueguito"; moduloActividad(nombre, () =>{ actividadTest(nombre, { - solucion: `CalentarHacerJueguito` + solucion: `CalentarHacerJueguito` }); actividadTest(nombre, { descripcionAdicional: 'Invirtiendo acciones sigue funcionando la solución', - solucion: `CalentarHacerJueguito"` + solucion: `CalentarHacerJueguito"` }); actividadTest(nombre, { descripcionAdicional: 'Da error al no seguir la secuencia esperada', - solucion: 'CalentarHacerJueguito', + solucion: 'CalentarHacerJueguito', errorEsperado: 'Primero hay que entrar en calor y agarrar la pelota' }); From 4ce809d3d254ad5cc4f7fd8d9808ec258b8a41fe Mon Sep 17 00:00:00 2001 From: Daniel Ferro Date: Fri, 20 Oct 2023 16:11:40 -0300 Subject: [PATCH 8/8] update pb-exercises 1.4.13 --- package-lock.json | 6 +++--- package.json | 2 +- public/pilas.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a46900bb9..14d80eb74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33036,9 +33036,9 @@ } }, "pilas-bloques-exercises": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/pilas-bloques-exercises/-/pilas-bloques-exercises-1.4.8.tgz", - "integrity": "sha512-g/BLtu9ts63eSyIWioeVM3NFHjt9Ln/xXShYiG/1n8ST5K7AOgafoOjds1tYtpAbdqAf0KCIp9sXOLDoRn5M+A==", + "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 b625813a2..fb4063ef2 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 ff7f121b9..d51c8ee5a 100644 --- a/public/pilas.html +++ b/public/pilas.html @@ -22,7 +22,7 @@ - +