Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
public/libs
.vscode/settings.json
86 changes: 47 additions & 39 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>

<!-- no cache-->
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Web site created using create-react-app" />

<!-- no cache-->
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">

<link rel="apple-touch-icon" href="/logo192.png" />
<!--

<link rel="apple-touch-icon" href="/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="/manifest.json" />
<!--
<link rel="manifest" href="/manifest.json" />
<!--
Notice the use of in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Expand All @@ -32,27 +30,36 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<style>
/* This is needed because Electron deals with file:// protocol and needs absolute paths.
<style>
/* This is needed because Electron deals with file:// protocol and needs absolute paths.
This way it works with Electron and with npm start and serving the build dir
I couldn't find a tidier way to do this. All googling failed. */
@font-face {
font-family: 'Nunito';
src: url("Nunito-VariableFont_wght.ttf") format('truetype');
}
</style>
<script>
window.PBRuntime = {
apiURL: "" // gets replaced at deploy
}
</script>
@font-face {
font-family: 'Nunito';
src: url("Nunito-VariableFont_wght.ttf") format('truetype');
}
</style>
<script>
window.PBRuntime = {
apiURL: "" // gets replaced at deploy
}
</script>

<title>Pilas Bloques</title>
</head>

<title>Pilas Bloques</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
<body>
<script id="mulang.js" src="/assets/mulang.js"></script>
<script>
console.log('MULANG SCRIPT LOADED?', {
windowMulang: window.mulang,
globalMulang: globalThis.mulang,
keys: Object.keys(window).filter(k => k.toLowerCase().includes('mulang'))
})
</script>
Comment on lines +53 to +59
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.

Expand All @@ -62,6 +69,7 @@
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
<script type="module" src="/src/index.tsx"></script>
</body>
</html>
<script type="module" src="/src/index.tsx"></script>
</body>

</html>
12 changes: 12 additions & 0 deletions locales/en-us/challenge.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
{
"expectationsModal": {
"scoredExpectations": {
"notAllPassed": {
"title": "Good job, but... it could be even better!",
"description": "Review your solution and try to meet all the goals."
},
"allPassed": {
"title": "You did it!",
"description": "You achieved all the goals."
}
}
},
"congratulationsModal": {
"title": "You did it!",
"subtitle": "Something to think about...",
Expand Down
38 changes: 38 additions & 0 deletions locales/en-us/mulang.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"suggestions": {
"uses_simple_repetition": "Remember to use REPETITION to do something multiple times, instead of many equal blocks!",
"uses_conditional_alternative": "Does your program work only sometimes? You could use conditional alternatives to check for all possible scenarios.",
"uses_conditional_repetition": "You can use conditional repetition if you need to repeat something until the condition is met.",
"main_too_long": "Main program is too long and hard to read. Try divinding it into simpler pieces of work using procedures.",
"too_long": "This procedure is too long and hard to read. Try divinding it into simpler pieces of work using procedures.",
"do_something": "This procedure is empty and thus does nothing. Add blocks to it so it can work.",
"name_was_changed": "You can name this procedure. A good idea for any procedure's name is to think: What does it do?",
"is_used": "This procedure is not being used by any part of the program. Click on the hand to create a functional command to use.",
"is_used_from_main": "This procedure is being used by another one, but that one is not being called by the main program. Check for errors to make it work.",
"does_not_use_recursion": "Be Careful! This procedure is trying to call itself! Try to tackle this challenge in a different way.",
"does_not_nest_control_structures": "This block could be inside a procedure which's name describes what it does.",
"check_out_this_block": "Check out this block."
},
"scoreable": {
"solution_works": "Your solution works!",
"uses_simple_repetition": "{result, select, \n true {You're using}\n other {You should Use}\n} repetition for the repeating parts of the program.\n",
"uses_conditional_alternative": "{result, select, \n true {You're using}\n other {You should Use}\n} conditional alternatives to consider all possible scenarios.\n",
"uses_conditional_repetition": "{result, select, \n true {You're using}\n other {You should Use}\n} conditional repetition to consider varying scenarios.\n",
"main_too_long": "{result, select, \n true {The main program is short and legible.}\n other {Main program is too long, it should be divided into simpler pieces of work}\n}\n",
"too_long": "{result, select, \n true {Your procedures are}\n other {Your procedures should be}\n} divided into simpler pieces of work.\n",
"do_something": "{result, select, \n true {Your procedures are not empty, they contain blocks}\n other {Your procedures are empty, they should contain blocks}\n}.\n",
"name_was_changed": "{result, select,\n true {You chose}\n other {You should choose}\n} a name for each one of your procedures.\n",
"does_not_nest_control_structures": "{result, select, \n true {Your repetitions and alternatives are subdivided}\n other {You should also subdivide your repetitions and alternatives}\n} into simpler pieces of work using procedures.\n"
},
"control_group": {
"solution_works": "Your solution _works_!",
"uses_simple_repetition": "You should use simple repetition for the repeating parts of your program.",
"uses_conditional_alternative": "You should use conditional alternative to consider all possible scenarios.",
"uses_conditional_repetition": "You should use conditional repetition to consider all scenarios.",
"main_too_long": "The main program should be subdivided into simpler pieces of work using procedures.",
"too_long": "Your procedures should not be long, they should also be subdivided into simpler pieces of work (procedures).",
"do_something": "You should not have empty procedures with no blocks.",
"name_was_changed": "You should choose a good name for each one of your procedures.",
"does_not_nest_control_structures": "You should also divide your repetitions and alternatives into simpler pieces of work using procedures."
}
}
12 changes: 12 additions & 0 deletions locales/es-ar/challenge.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
{
"expectationsModal": {
"scoredExpectations": {
"notAllPassed": {
"title": "Está bien, pero... ¡podría estar mejor!",
"description": "Revisá tu solución e intentá cumplir con todos los objetivos."
},
"allPassed": {
"title": "¡Lo lograste!",
"description": "Cumpliste todos los objetivos."
}
}
},
"congratulationsModal": {
"title": "¡Lo lograste!",
"subtitle": "Para pensar...",
Expand Down
38 changes: 38 additions & 0 deletions locales/es-ar/mulang.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"suggestions": {
"uses_simple_repetition": "Recordá que en lugar de poner muchos bloques iguales podés usar la repetición para hacer algo muchas veces.",
"uses_conditional_alternative": "¿Tu programa anda a veces sí y a veces no? Podés usar alternativa condicional para considerar todos los escenarios posibles.",
"uses_conditional_repetition": "Podés usar repetición condicional cuando tenés que repetir algo hasta que se cumpla una condición.",
"main_too_long": "El programa principal quedó largo y por lo tanto es difícil de leer. Podrías dividirlo en subtareas usando procedimientos.",
"too_long": "Este procedimiento quedó largo y difícil de leer. Podrías dividirlo en subtareas usando procedimientos.",
"do_something": "Este procedimiento está vacío y por lo tanto no hace nada. Agregale bloques para que tenga algún efecto.",
"name_was_changed": "Podés escribir un nombre para este procedimiento. Una buena forma de nombrarlo es responder a la pregunta: ¿qué hace este procedimiento?",
"is_used": "Este procedimiento no está siendo usado desde ninguna parte del programa. Hacé click en la manito y eso crea el nuevo comando que podés usar.",
"is_used_from_main": "Este procedimiento está siendo usado por otro, pero ese otro no es llamado desde el programa principal. Revisá eso para que tenga efecto.",
"does_not_use_recursion": "¡Cuidado! ¡Este procedimiento se llama a sí mismo! Intentá resolver de otra forma este desafío.",
"does_not_nest_control_structures": "Este bloque podría estar en un procedimiento con un buen nombre que describa qué tarea resuelve.",
"check_out_this_block": "Revisá este bloque."
},
"scoreable": {
"solution_works": "¡Tu solución _funciona_!",
"uses_simple_repetition": "{result, select, \n true {Usás}\n other {Deberías usar}\n} **repetición simple** para las partes de tu programa que hay que repetir.\n",
"uses_conditional_alternative": "{result, select, \n true {Usás}\n other {Deberías usar}\n} **alternativa condicional** para considerar los escenarios variantes.\n",
"uses_conditional_repetition": "{result, select, \n true {Usás}\n other {Deberías usar}\n} **repetición condicional** :repeat: para considerar los escenarios variantes.\n",
"main_too_long": "{result, select, \n true {El _programa principal_ es corto, y por eso es más **fácil de leer**.}\n other {El _programa principal_ es largo, y por eso es **difícil de leer**. <br/> :point_right: Debería estar dividido en subtareas usando **procedimientos**.}\n}\n",
"too_long": "{result, select, \n true {Tus _procedimientos_ son cortos y por eso son más **fáciles de leer**.}\n other {Tus _procedimientos_ son largos y por eso son más **difíciles de leer**. <br/> :point_right: Deberían estar divididos en subtareas usando **más procedimientos** dentro de ellos.}\n}\n",
"do_something": "{result, select, \n true {Tus _procedimientos_ no están vacíos, **tienen bloques** adentro}\n other {Tus _procedimientos_ están **vacíos** <br/> :point_right: deberían tener bloques en su interior}\n}.\n",
"name_was_changed": "{result, select,\n true {Elegiste}\n other {Tus procedimientos se llaman \"Hacer algo\" <br/> :point_right: Podrías elegir}\n} un **nombre** para cada uno de tus procedimientos.\n",
"does_not_nest_control_structures": "{result, select, \n true {Tu programa es más fácil de leer porque tus _repeticiones y alternativas_ están divididas}\n other {Para que tu programa sea más fácil de leer <br/> :point_right: dentro de las _repeticiones y alternativas_ deberías dividir}\n} en subtareas usando **procedimientos**.\n"
},
"control_group": {
"solution_works": "¡Tu solución _funciona_!",
"uses_simple_repetition": "Deberías usar **repetición simple** :repeat: para las partes de tu programa que se repiten.",
"uses_conditional_alternative": "Deberías usar **alternativa condicional** para considerar todos los escenarios.",
"uses_conditional_repetition": "Deberías usar **repetición condicional** para considerar todos los escenarios.",
"main_too_long": "El _programa principal_ debería ser corto y **fácil de leer**. Podés hacerlo más corto dividiéndolo en subtareas usando **procedimientos**.",
"too_long": "Tus _procedimientos_ deberían ser cortos y **fáciles de leer**. Podés hacerlos más cortos dividiéndolos en subtareas usando **más procedimientos** dentro de ellos.",
"do_something": "No deberías tener procedimientos **vacíos**, sin bloques.",
"name_was_changed": "Deberías elegir un buen **nombre** para cada uno de tus procedimientos.",
"does_not_nest_control_structures": "Dentro de las repeticiones y alternativas también deberías dividir en subtareas usando **procedimientos**."
}
}
12 changes: 12 additions & 0 deletions locales/pt-br/challenge.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
{
"expectationsModal": {
"scoredExpectations": {
"notAllPassed": {
"title": "Está bom, mas... pode ficar ainda melhor!",
"description": "Revise sua solução e tente cumprir todos os objetivos."
},
"allPassed": {
"title": "Você conseguiu!",
"description": "Você cumpriu todos os objetivos."
}
}
},
"congratulationsModal": {
"title": "Você conseguiu!",
"subtitle": "Para pensar...",
Expand Down
38 changes: 38 additions & 0 deletions locales/pt-br/mulang.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"suggestions": {
"uses_simple_repetition": "Recordá que en lugar de poner muchos bloques iguales podés usar la repetición para hacer algo muchas veces.",
"uses_conditional_alternative": "¿Tu programa anda a veces sí y a veces no? Podés usar alternativa condicional para considerar todos los escenarios posibles.",
"uses_conditional_repetition": "Podés usar repetición condicional cuando tenés que repetir algo hasta que se cumpla una condición.",
"main_too_long": "El programa principal quedó largo y por lo tanto es difícil de leer. Podrías dividirlo en subtareas usando procedimientos.",
"too_long": "Este procedimiento quedó largo y difícil de leer. Podrías dividirlo en subtareas usando procedimientos.",
"do_something": "Este procedimiento está vacío y por lo tanto no hace nada. Agregale bloques para que tenga algún efecto.",
"name_was_changed": "Podés escribir un nombre para este procedimiento. Una buena forma de nombrarlo es responder a la pregunta: ¿qué hace este procedimiento?",
"is_used": "Este procedimiento no está siendo usado desde ninguna parte del programa. Hacé click en la manito y eso crea el nuevo comando que podés usar.",
"is_used_from_main": "Este procedimiento está siendo usado por otro, pero ese otro no es llamado desde el programa principal. Revisá eso para que tenga efecto.",
"does_not_use_recursion": "¡Cuidado! ¡Este procedimiento se llama a sí mismo! Intentá resolver de otra forma este desafío.",
"does_not_nest_control_structures": "Este bloque podría estar en un procedimiento con un buen nombre que describa qué tarea resuelve.",
"check_out_this_block": "Revisá este bloque."
},
"scoreable": {
"solution_works": "¡Tu solución funciona!",
"uses_simple_repetition": "{result, select, \n true {Usás}\n other {Deberías usar}\n} repetición para las partes de tu programa que se repiten.\n",
"uses_conditional_alternative": "{result, select, \n true {Usás}\n other {Deberías usar}\n} alternativa condicional para considerar los escenarios variantes.\n",
"uses_conditional_repetition": "{result, select, \n true {Usás}\n other {Deberías usar}\n} repetición condicional para considerar los escenarios variantes.\n",
"main_too_long": "{result, select, \n true {El programa principal es corto y legible.}\n other {El programa principal es largo, debería estar dividido en subtareas.}\n} \n",
"too_long": "{result, select, \n true {Tus procedimientos están}\n other {Tus procedimientos deberían estar}\n} divididos en subtareas.\n",
"do_something": "{result, select, \n true {Tus procedimientos no están vacíos, tienen bloques adentro}\n other {Tus procedimientos están vacíos, deberían tener bloques en su interior}\n}.\n",
"name_was_changed": "{result, select,\n true {Elegiste}\n other {Podrías elegir}\n} un nombre para cada uno de tus procedimientos.\n",
"does_not_nest_control_structures": "{result, select, \n true {Tus repeticiones y alternativas están divididas}\n other {Dentro de las repeticiones y alternativas también deberías dividir}\n} en subtareas usando procedimientos.\n"
},
"control_group": {
"solution_works": "¡Tu solución _funciona_!",
"uses_simple_repetition": "Deberías usar repetición simple para las partes de tu programa que se repiten.",
"uses_conditional_alternative": "Deberías usar alternativa condicional para considerar todos los escenarios.",
"uses_conditional_repetition": "Deberías usar repetición condicional para considerar todos los escenarios.",
"main_too_long": "El programa principal debería estar dividido en subtareas usando procedimientos.",
"too_long": "Tus procedimientos no deberían ser largos, también deberían estar divididos en subtareas.",
"do_something": "No deberías tener procedimientos vacíos, sin bloques.",
"name_was_changed": "Deberías elegir un buen nombre para cada uno de tus procedimientos.",
"does_not_nest_control_structures": "Dentro de las repeticiones y alternativas también deberías dividir en subtareas usando procedimientos."
}
}
15 changes: 15 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading