diff --git a/2019-setembro/immurderer/README.md b/2019-setembro/immurderer/README.md new file mode 100644 index 0000000..8147f3b --- /dev/null +++ b/2019-setembro/immurderer/README.md @@ -0,0 +1,41 @@ +![Pense Bem](https://i.imgur.com/ldxhetL.png) + +[![Netlify Status](https://api.netlify.com/api/v1/badges/3ad0b86f-d9b6-4608-8ecf-0e82bb0111c6/deploy-status)](https://immurderer-pense-bem.netlify.com) + +## Pense Bem by ImMurderer + +Minha ideia foi manter o layout original. +As cores foram adaptadas, visto que estavam muito saturadas, para a paleta foi usada uma [Flat Aussie](https://flatuicolors.com/palette/au). +Preferi não manter uma cor sólida ou degradê no fundo, então foi escolhido o pattern [Hodge Podge](http://thepatternlibrary.com/#hodgepodge). +O site está relativamente responsivo, há apenas alguns erros em questão de tamanho das linhas de botões. Há também um problema de saturação com os emojis no android, que ficam praticamente invisiveis nos botões grandes. + +--- + +## Instruções + +Ligue o aparelho, escolha um jogo. Pressione enter para responder as questões na tela! 😄 + +### Jogos + +- Adição + - Use os botões numéricos para escolher o resultado da soma. +- Subtração + - Use os botões numéricos para escolher o resultado da subtração. +- Multiplicação + + - Use os botões numéricos para escolher o resultado da multiplicação. + +- Divisão + - Use os botões numéricos para escolher o resultado da divisão. +- Aritmética + - São apresentadas diversas contas aleatórias, use os botões numéricos para escolher o resultado. +- Operação + - São apresentadas diversas contas aleatórias sem o operador e seus resultados, utilize os botões azuis para escolher o operador correto que levará a resposta. +- Pokemón + - São apresentados diversos pokemóns, utilize os botões grandes para escolher o tipo certo do pokemón. +- ~~666~~ + - RXN0ZSBqb2dvIGVzdMOhIGFtYWxkacOnb2FkbywgcG9yIGFsZ3VtIG1vdGl2byBlbGUgbsOjbyBtb3N0cmEgbmFkYSBhbMOpbSBkZSBjYXJhY3TDqXJlcyBhbGVhdG9yaW9zIGUgdW1hIG11c2ljYSBpbmZlcm5hbCEhIS4= +- Numero do Meio + - São apresentados 2 numeros insira, com os botões numéricos, a média destes numeros. +- Adivinhe o Numero + - O video-game gera um numero aleatório, use os botões numéricos para adivinhar. diff --git a/2019-setembro/immurderer/css/fonts/DS-DIGI.TTF b/2019-setembro/immurderer/css/fonts/DS-DIGI.TTF new file mode 100644 index 0000000..0925877 Binary files /dev/null and b/2019-setembro/immurderer/css/fonts/DS-DIGI.TTF differ diff --git a/2019-setembro/immurderer/css/fonts/DS-DIGIB.TTF b/2019-setembro/immurderer/css/fonts/DS-DIGIB.TTF new file mode 100644 index 0000000..064ad47 Binary files /dev/null and b/2019-setembro/immurderer/css/fonts/DS-DIGIB.TTF differ diff --git a/2019-setembro/immurderer/css/fonts/DS-DIGII.TTF b/2019-setembro/immurderer/css/fonts/DS-DIGII.TTF new file mode 100644 index 0000000..2aae3d8 Binary files /dev/null and b/2019-setembro/immurderer/css/fonts/DS-DIGII.TTF differ diff --git a/2019-setembro/immurderer/css/fonts/DS-DIGIT.TTF b/2019-setembro/immurderer/css/fonts/DS-DIGIT.TTF new file mode 100644 index 0000000..65642f9 Binary files /dev/null and b/2019-setembro/immurderer/css/fonts/DS-DIGIT.TTF differ diff --git a/2019-setembro/immurderer/css/imgs/hodgepodge.png b/2019-setembro/immurderer/css/imgs/hodgepodge.png new file mode 100644 index 0000000..3e88ff8 Binary files /dev/null and b/2019-setembro/immurderer/css/imgs/hodgepodge.png differ diff --git a/2019-setembro/immurderer/css/main.css b/2019-setembro/immurderer/css/main.css new file mode 100644 index 0000000..a734fea --- /dev/null +++ b/2019-setembro/immurderer/css/main.css @@ -0,0 +1,356 @@ +@font-face { + font-family: DIGIT; + src: url("./fonts/DS-DIGI.TTF"); +} + +* { + padding: 0; + margin: 0; + box-sizing: content-box; +} +body { + background: url("./imgs/hodgepodge.png") lightblue; +} +#penseBem { + width: 70%; + margin: auto; + margin-top: 50px; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + text-align: right; + padding-bottom: 5px; +} +/* #region front */ +#front { + display: flex; + height: 150px; + align-items: center; + justify-content: center; + border-radius: 5px; + background-color: whitesmoke; +} + +#front::before { + content: ""; + position: relative; + left: 2%; + top: 82px; + background-color: white; + box-shadow: inset black; + width: 10%; + height: 20px; + box-shadow: inset 0 0 10px black; + z-index: -10; +} +#front::after { + content: ""; + position: relative; + right: 2%; + top: 82px; + background-color: white; + box-shadow: inset black; + width: 10%; + height: 20px; + box-shadow: inset 0 0 10px black; + z-index: -10; +} + +/* #endregion */ + +/* #region disk */ +#disk { + width: 50%; + height: 112px; + display: flex; + justify-content: center; + align-items: center; + border: 5px inset; + border-radius: 0 5px 5px 0; +} + +.cube { + position: absolute; + width: 75px; + height: 50px; + border: 5px inset; + border-radius: 5px; +} +.rect { + position: absolute; + background-color: white; + width: 200px; + height: 20px; + border: 5px inset; + border-radius: 5px; +} +/* #endregion */ + +/* #region lcd */ +#display { + display: flex; + flex-direction: column; + width: 100%; + color: white; + overflow: hidden; +} + +#lcd { + color: red; + font-size: 4em; + line-height: 83px; + background-color: #222; + border-radius: 5px 0 0 0; + padding: 5px 15px; + font-family: DIGIT, sans-serif, serif; + height: 83px; +} + +#lcd-footer { + display: flex; + background-color: #333; + padding: 5px 15px; + justify-content: space-between; + align-items: center; + border-radius: 0 0 0 5px; +} + +#lcd-footer div { + display: flex; +} + +.brick { + width: 50px; + height: 10px; + margin-left: 5px; +} +/* #endregion */ + +/* #region keys */ +#keyboard { + padding: 15px 15px; + margin-top: 15px; + background-color: whitesmoke; + border-radius: 5px; +} + +#keys { + background-color: #ccc; + padding: 5px 15px; + display: flex; + flex-direction: column; + border: 5px inset; +} + +#keys .line { + display: flex; + flex-wrap: wrap; + margin-bottom: 15px; + justify-content: space-between; + width: 95%; + align-items: center; +} + +#keys > :first-child > :first-child { + margin-top: 15px; + align-self: flex-start; +} +#keys > :nth-child(2) > :first-child { + align-self: flex-end; +} +#keys > :last-child > :first-child { + font-size: 0.6em; + align-self: flex-start; +} +/* #endregion */ + +ul { + list-style-type: none; +} + +/* #region buttons */ +.btn, +.btn-lg { + display: flex; + background-color: white; + color: black; + align-content: space-between; + justify-content: center; + flex-direction: column; + text-align: center; + width: 65px; + height: 65px; + word-wrap: break-word; + border-radius: 5px; + box-shadow: inset 0 0 10px black; + color: blue; + font-weight: bold; +} +.btn:hover, +.btn-lg:hover { + box-shadow: none; + cursor: pointer; +} +.btn-lg { + width: 100px; + height: 145px; + font-size: 28px; +} +.btn span { + height: 50%; + line-height: 200%; + border-radius: 5px; +} +/* #endregion */ + +/* #region rhomboid */ +.rhomboid { + transform: skew(-15deg); + margin-left: 5px; +} + +.rhomboid-btn-group { + display: flex; + margin-left: 15px; +} + +/* #endregion */ + +/* #region double-stacked */ +.double-stacked { + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + grid-row-gap: 15px; + grid-column-gap: 5px; + margin-left: 15px; + width: 300px; +} + +.double-stacked .first-line, +.last-line { + display: flex; +} +.double-stacked .first-line { + justify-self: flex-end; +} +.double-stacked .last-line { + justify-self: flex-start; +} +.double-stacked .btn { + margin-right: 5px; +} +/* #endregion */ + +#logo { + height: 25px; + font-size: 1.5em; + background-color: antiquewhite; + padding: 0 50px; + border: 1px solid lightgray; + border-radius: 5px; +} + +.marquee { + white-space: nowrap; + background-color: #222; + overflow: hidden; +} +.marquee > span { + padding-left: 100%; + animation: marquee 15s linear infinite; +} + +@keyframes marquee { + 0% { + transform: translate(60%, 0); + } + 100% { + transform: translate(-100%, 0); + } +} + +@media screen and (max-width: 770px) { + #front { + position: relative; + } + #front #disk { + display: none; + } + #display { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + #penseBem { + width: 100%; + margin-top: 0; + } + #front { + border-radius: 0; + } + + #keyboard { + border-radius: 0px; + } + .double-stacked { + padding-top: 15px; + } + .btn, + .btn-lg { + max-width: 64px; + max-height: 64px; + font-size: 12px; + } + .btn-lg { + max-width: 64px; + max-height: 64px; + } +} +@media screen and (min-width: 1500px) { + .btn, + .btn-lg { + width: 82px; + height: 82px; + font-size: 16px; + } + .btn-lg { + width: 142px; + height: 142px; + font-size: 32px; + } + .btn > span { + line-height: 250%; + } +} + +/* #region colors */ +.pink { + background-color: #be2edd; +} +.yellow { + background-color: #f9ca24; + color: #324e08; +} +.blue { + background-color: #4834d4; +} +.green { + background-color: #6ab04c; + color: #1e1e1e; +} +.red { + background-color: #eb4d4b; + color: #1e0c0c; + font-weight: bold; +} + +.pink, +.blue, +.green, +.red { + color: white; + font-weight: bold; +} + +/* #endregion */ diff --git a/2019-setembro/immurderer/favicon.png b/2019-setembro/immurderer/favicon.png new file mode 100644 index 0000000..a88474c Binary files /dev/null and b/2019-setembro/immurderer/favicon.png differ diff --git a/2019-setembro/immurderer/index.html b/2019-setembro/immurderer/index.html new file mode 100644 index 0000000..981ac7e --- /dev/null +++ b/2019-setembro/immurderer/index.html @@ -0,0 +1,115 @@ + + + + + + + + Pense Bem! + + + + + + +
+
+
+ +
+ TECTOY +
+ + + + +
+
+
+
+ + +
+
+ +
+ + + + + + + + diff --git a/2019-setembro/immurderer/js/games.js b/2019-setembro/immurderer/js/games.js new file mode 100644 index 0000000..2949591 --- /dev/null +++ b/2019-setembro/immurderer/js/games.js @@ -0,0 +1,60 @@ +function operacao(operador = null) { + questoes = []; + for (let i = 0; i < maxQuestions; i++) { + let b = Math.floor(Math.random() * maxNumber) + 1; + let a = Math.floor(Math.random() * maxNumber) + (operador == "/" ? b : 1); + operador = + operador == null ? "+-/*"[Math.floor(Math.random() * 4)] : operador; + conta = `${a}${operador}${b}`; + questoes.push({ conta: conta + " = ", res: Math.floor(eval(conta)) }); + } +} + +function gameOperacao() { + questoes = []; + for (let i = 0; i < maxQuestions; i++) { + let b = Math.floor(Math.random() * maxNumber) + 1; + let a = Math.floor(Math.random() * maxNumber) + 1; + operador = "+-/*"[Math.floor(Math.random() * 4)]; + resultado = Math.floor(eval(`${a}${operador}${b}`)); + conta = `${a}_${b}=${resultado} | `; + res = operador; + questoes.push({ conta, res }); + } +} + +function numeroDoMeio() { + questoes = []; + for (let i = 0; i < maxQuestions; i++) { + let a = Math.floor(Math.random() * 100) + 1; + let b = Math.floor(Math.random() * 100) + 1; + let media = Math.floor((a + b) / 2); + conta = `${a}~_~${b} | `; + questoes.push({ conta, res: media }); + } +} +function adivinheONumero() { + questoes = []; + let num = Math.floor(Math.random() * 10) + 1; + for (let i = 0; i < maxQuestions; i++) { + questoes.push(num); + } +} + +function pokemon() { + questoes = []; + let apiURL = "https://pokeapi.co/api/v2/type/"; + let types = ["🔥", "💧", "🍃", "⚡"]; + for (let i = 0; i < maxQuestions; i++) { + let j = Math.floor(Math.random() * 4) + 10; + axios + .get(apiURL + j) + .then(response => { + let pokemons = response.data.pokemon; + let randomIndex = Math.floor(Math.random() * pokemons.length); + let name = pokemons[randomIndex].pokemon.name; + questoes.push({ conta: "🐱 " + name + " = ", res: types[j - 10] }); + }) + .catch(err => console.error(err)); + } +} diff --git a/2019-setembro/immurderer/js/handlers.js b/2019-setembro/immurderer/js/handlers.js new file mode 100644 index 0000000..e3cb04f --- /dev/null +++ b/2019-setembro/immurderer/js/handlers.js @@ -0,0 +1,84 @@ +let lcd_isOn = false; +let canEval = false; +let maxNumber = 10; +let questoes = []; +let mostraProx = true; +let pontuacao = 0; +let maxQuestions = 10; +let i = 0; + +const lcd = document.getElementById("lcd"); + +function handleSuccess(condicao, mensagem = "") { + if (condicao) { + success_sound.play(); + pontuacao += 10; + console.log("Acertou"); + show("PARABENS"); + } else { + fail_sound.play(); + pontuacao -= 5; + show(mensagem); + } +} +function handleEnter() { + if (i < questoes.length) { + // Se não for pra mostrar + if (!mostraProx) { + // Pega o resultado do lcd + if (lcd.innerHTML.match(/\d(\+|\-|\*|\/)\d/)) { + res = /(\+|-)?\d*$/.exec(lcd.innerHTML)[0] || 0; + // Verifica se o resultado esta correto + handleSuccess( + questoes[i].res == res, + `${questoes[i].conta}${questoes[i].res}` + ); + // Proibe digitar + canEval = false; + } else if (lcd.innerHTML.indexOf("~") >= 1) { + res = lcd.innerHTML.match(/\d*$/)[0].slice(1); + handleSuccess( + questoes[i].res == res, + questoes[i].conta.replace("_", questoes[i].res) + ); + } else if (lcd.innerHTML.indexOf("Adivinhe") >= 0) { + res = lcd.innerHTML.match(/\d*$/)[0].slice(1); + msg = + i + 1 >= questoes.length + ? "Correto: " + questoes[i] + : "X Adivinhe | "; + handleSuccess(questoes[i] == res, msg); + i++; + return; + } else if (lcd.innerHTML.indexOf("🐱") >= 0) { + res = lcd.innerHTML.match(/(🔥|⚡|💧|🍃)$/) + ? lcd.innerHTML.match(/(🔥|⚡|💧|🍃)$/)[0] + : 0; + handleSuccess( + questoes[i].res == res, + questoes[i].conta + questoes[i].res + ); + } else if (lcd.innerHTML.indexOf("|") >= 0) { + res = lcd.innerHTML.slice(-1); + // Mensagem de erro é conta com o underscore trocado + handleSuccess( + questoes[i].res == res, + questoes[i].conta.replace("_", questoes[i].res) + ); + } + // Permite mostrar o proximo + mostraProx = true; + i++; + } else { + // Mostra a conta + show(questoes[i].conta || "Adivinhe _ "); + // Permite digitar + canEval = true; + // Impede o display de outra conta + mostraProx = false; + } + } else if (pontuacao > 0) { + show("Pontos: " + pontuacao); + pontuacao = 0; + } +} diff --git a/2019-setembro/immurderer/js/lcdFunctions.js b/2019-setembro/immurderer/js/lcdFunctions.js new file mode 100644 index 0000000..3601124 --- /dev/null +++ b/2019-setembro/immurderer/js/lcdFunctions.js @@ -0,0 +1,42 @@ +function show(str, animate = false) { + lcd.innerHTML = ""; + if (str.length > 10) { + lcd.parentElement.classList.add("marquee"); + } else { + lcd.parentElement.classList.remove("marquee"); + } + let i = 0; + function type() { + if (i < str.length) { + lcd.innerHTML += str.charAt(i); + i++; + setTimeout(type, 150); + } + } + if (animate) { + type(); + return; + } + lcd.innerHTML = str; +} + +function on() { + if (!lcd_isOn) { + show("HELLO", true); + turn_on_sound.play(); + lcd_isOn = true; + } +} +function off() { + if (lcd_isOn) { + show(""); + turn_off_sound.play(); + canEval = false; + enterPressed = false; + lcd_isOn = false; + mostraProx = true; + questoes = []; + i = 0; + pontuacao = 0; + } +} diff --git a/2019-setembro/immurderer/js/main.js b/2019-setembro/immurderer/js/main.js new file mode 100644 index 0000000..32ed069 --- /dev/null +++ b/2019-setembro/immurderer/js/main.js @@ -0,0 +1,66 @@ +function press(e) { + if (lcd_isOn) { + let value = e.target.innerHTML; + switch (value) { + case "ADIÇÃO": + operacao("+"); + handleEnter(); + break; + case "SUBTRAÇÃO": + operacao("-"); + handleEnter(); + break; + case "MULTIPLICAÇÃO": + operacao("*"); + handleEnter(); + break; + case "DIVISÃO": + operacao("/"); + handleEnter(); + break; + case "ARITMÉTICA": + operacao(); + handleEnter(); + break; + case "OPERAÇÃO": + gameOperacao(); + handleEnter(); + break; + case "NUMERO DO MEIO": + numeroDoMeio(); + handleEnter(); + break; + case "ADIVINHE O NUMERO": + adivinheONumero(); + handleEnter(); + break; + case "POKEMON": + pokemon(); + handleEnter(); + break; + case "🦈": + curse_sound.play(); + show("666B4BY5H4RKW1LL34TY0UR50UL666"); + break; + case "ENTER": + handleEnter(); + break; + } + if (canEval) { + if (!isNaN(value) || value.match(/(\+|\*|\-|\/|🔥|⚡|💧|🍃)/)) { + lcd.innerHTML += value; + } + } + if (value.match(/^(DO|RÉ|MI|FÁ|SOL|LÁ|SI|DÒ|RÈ)/)) { + pianoSounds[value].play(); + } else { + click_sound.play(); + } + } +} + +buttons = document.querySelectorAll(".btn, .btn-lg"); +for (let i = 0; i < buttons.length; i++) { + if (buttons[i].innerHTML == "LIGA") continue; + buttons[i].addEventListener("click", press); +} diff --git a/2019-setembro/immurderer/js/sounds.js b/2019-setembro/immurderer/js/sounds.js new file mode 100644 index 0000000..58652ac --- /dev/null +++ b/2019-setembro/immurderer/js/sounds.js @@ -0,0 +1,34 @@ +let turn_on_sound = new sound("./js/sounds/turn_on.wav"); +let turn_off_sound = new sound("./js/sounds/turn_off.wav"); +let click_sound = new sound("./js/sounds/click.wav"); +let success_sound = new sound("./js/sounds/success.wav"); +let fail_sound = new sound("./js/sounds/fail.wav"); + +let pianoSounds = { + DO: new sound("./js/sounds/piano_notes/do.mp3"), + RÉ: new sound("./js/sounds/piano_notes/re.mp3"), + MI: new sound("./js/sounds/piano_notes/mi.mp3"), + FÁ: new sound("./js/sounds/piano_notes/fa.mp3"), + SOL: new sound("./js/sounds/piano_notes/sol.mp3"), + LÁ: new sound("./js/sounds/piano_notes/la.mp3"), + SI: new sound("./js/sounds/piano_notes/si.mp3"), + DÒ: new sound("./js/sounds/piano_notes/do8.mp3"), + RÈ: new sound("./js/sounds/piano_notes/re.mp3") +}; + +let curse_sound = new sound("./js/sounds/baby_shark.mp3"); + +function sound(src) { + this.sound = document.createElement("audio"); + this.sound.src = src; + this.sound.setAttribute("preload", "auto"); + this.sound.setAttribute("controls", "none"); + this.sound.style.display = "none"; + document.body.appendChild(this.sound); + this.play = function() { + this.sound.play(); + }; + this.stop = function() { + this.sound.pause(); + }; +} diff --git a/2019-setembro/immurderer/js/sounds/baby_shark.mp3 b/2019-setembro/immurderer/js/sounds/baby_shark.mp3 new file mode 100644 index 0000000..460f3aa Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/baby_shark.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/click.wav b/2019-setembro/immurderer/js/sounds/click.wav new file mode 100644 index 0000000..38ad5ae Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/click.wav differ diff --git a/2019-setembro/immurderer/js/sounds/fail.wav b/2019-setembro/immurderer/js/sounds/fail.wav new file mode 100644 index 0000000..5ef4702 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/fail.wav differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/do.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/do.mp3 new file mode 100644 index 0000000..a10a001 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/do.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/do8.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/do8.mp3 new file mode 100644 index 0000000..310a8c0 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/do8.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/fa.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/fa.mp3 new file mode 100644 index 0000000..84b8eef Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/fa.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/la.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/la.mp3 new file mode 100644 index 0000000..dfe27fb Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/la.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/mi.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/mi.mp3 new file mode 100644 index 0000000..f402847 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/mi.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/re.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/re.mp3 new file mode 100644 index 0000000..92ef8d8 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/re.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/si.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/si.mp3 new file mode 100644 index 0000000..f72bf3d Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/si.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/piano_notes/sol.mp3 b/2019-setembro/immurderer/js/sounds/piano_notes/sol.mp3 new file mode 100644 index 0000000..723fa1a Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/piano_notes/sol.mp3 differ diff --git a/2019-setembro/immurderer/js/sounds/success.wav b/2019-setembro/immurderer/js/sounds/success.wav new file mode 100644 index 0000000..5df6fee Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/success.wav differ diff --git a/2019-setembro/immurderer/js/sounds/turn_off.wav b/2019-setembro/immurderer/js/sounds/turn_off.wav new file mode 100644 index 0000000..0b22358 Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/turn_off.wav differ diff --git a/2019-setembro/immurderer/js/sounds/turn_on.wav b/2019-setembro/immurderer/js/sounds/turn_on.wav new file mode 100644 index 0000000..4ded27c Binary files /dev/null and b/2019-setembro/immurderer/js/sounds/turn_on.wav differ