4
respostas

Tentando criar um piano acionado por teclas a partir dessa ideia

Oi Pessoal, eu consegui fazer o jogo do Ping pong e me interessei por fazer um piano acionado por teclas. Subi os arquivos em audio, por um momento chegou a dar certo, mas não sei como prosseguir para dar certo (sumiu tudo da tela e não acho o erro).

O link é esse: https://editor.p5js.org/maryandrioli/sketches/cHLFagssU

Estou tentando que ao acionar tecla para cima toque o som notado.m3, tecla para baixo toque o som re.mp3 e assim por diante. Se alguem puder me ajudar, agradeço muito.

Ainda estou apanhando na ideia de fechar colchetes, parentes etc []s

4 respostas

Oi Mary tudo bem? o console ajuda bastante a achar os erros, ele sempre dá a linha:coluna onde está faltando ou tendo mais chaves e colchetes do que deveria. Exemplo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se tem uma chave } não esperada na linha 43.

São dois motivos:

  • ou está faltando uma chave de abertura {
  • ou tem uma chave de fechamento } a mais.

Manter a indentação certinha ajuda muito também, cada nova { por exemplo você pode usar o tab.

Eu fiz uma correção com base no código que você tinha, tinha alguns arquivos inexistentes como o notado.mp3 e a chamada para a função KeyIsDown ao invés de keyIsDown e DOWN_LEFT seria LEFT_ARROW.

let notado, re, mi, fa, sol, si, la;

function preload() {
    // sons do jogo
    // notado = loadSound("notado.mp3");
    re = loadSound("re.mp3");
    mi = loadSound("mi.mp3");
    fa = loadSound("fa.mp3");
    sol = loadSound("sol.mp3");
    //  la = loadSound("la.mp3");
    si = loadSound("si.mp3");

}

function setup() {
    createCanvas(600, 400);

}

function draw() {
    background(255, 140, 255);
    mostraBolinha();

    if (keyIsDown(UP_ARROW)){
        fa.play();
    }

    if (keyIsDown(DOWN_ARROW)) {
        re.play();
    }

    if (keyIsDown(LEFT_ARROW)) {
        mi.play();
    }
    if (keyIsDown(RIGHT_ARROW)){
          fa.play();
    }

}

function mostraBolinha() {
    let xBolinha = 300;
    let yBolinha = 200;
    let diametro = 80;
    let raio = diametro / 2;
    circle(xBolinha, yBolinha, diametro);
}

Puxa, deu super certo! Muito grata. Alguns erros infelizmente foram por distração, mas a forma como você comentou ajudou muito.

Se não for abuso perguntar, como faço para inserir outras teclas? Eu tentei achar na documentação, mas só achei o UP e o Down... Queria incluir o space, enter, numeros e letras. Ha algum link que mostre todas as possibilidades?

[]s

Mary

Então, tem na documentação essas constantes definidas do PJ5: BACKSPACE, DELETE, ENTER, RETURN, TAB, ESCAPE, SHIFT, CONTROL, OPTION, ALT, UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW. Mas você pode passar o código numérico encontrado nesse site Keycode.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAi você passaria como um inteiro.

   if (keyIsDown(67)) {
        re.play();
    }

https://keycode.info/

https://p5js.org/reference/#p5/keyCode

super grata!