Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

A bolinha não consegue se mover pelo teclado...

<canvas width="600" height="400"></canvas>

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    var x = 20;
    var y = 20;

    // códigos do teclado

    var esquerda = 37;
    var cima = 38;
    var direita = 39;
    var baixo = 40;

    // taxa de incremento
    var taxa = 10;

    function desenhaCirculo(x, y, raio) {

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }

    function atualizaTela() {

        limpaTela();
        desenhaCirculo(x, y, 10);
    }

    setInterval(atualizaTela, 20);

// como saber qual tecla foi pressionada?
    function leDoTeclado(evento) {
        if (evento.keycode == esquerda) {
            x = x - taxa;
        } else if (evento.keycode == direita) {
            x = x + taxa;
        } else if (evento.keycode == cima) {
            y = y - taxa;
        } else if (evento.keycode == baixo) {
            y = y + taxa;
        }  
    }

    document.onkeydown = leDoTeclado;

</script>
2 respostas

Olá, Ially! Tudo bom contigo?

Desde já, peço desculpas pela demora em retornar.

Para utilizar a propriedade do evento onkeydown que verifica o código da tecla, precisamos seguir a convenção de nomenclatura do Javascript!

Dentre as várias maneiras de se escrever um código, a comunidade que trabalha com Javascript optou por seguir a forma conhecida como “Camel Case”. Com isso, tem-se como padrão escrever as palavras de variáveis e funções, por exemplo, da seguinte maneira:

  • Iniciar a primeira palavra com letra minúscula;
  • Deixar a inicial das próximas palavras (se existirem) em maiúsculo.

Seguindo essa ideia, o comando que retorna o código da tecla, ao pressioná-la, é evento.keyCode. Notou que a inicial de “Code” é uma letra maiúscula? Isso se deve ao “Camel Case”!

Aplicando isso em seu código, chegamos no seguinte resultado:

// como saber qual tecla foi pressionada?
function leDoTeclado(evento) {
    if (evento.keyCode == esquerda) {
        x = x - taxa;
    } else if (evento.keyCode == direita) {
        x = x + taxa;
    } else if (evento.keyCode == cima) {
        y = y - taxa;
    } else if (evento.keyCode == baixo) {
        y = y + taxa;
    }  
}

Dessa maneira, a bolinha passa a se movimentar, conforme as teclas que pressionamos!

Caso queira se aprofundar nesse assunto — sobre convenções de nomenclatura — deixo como recomendação um artigo bem interessante da Alura que aborda tal temática! Você pode acessá-lo logo abaixo:

Fico à disposição para te auxiliar caso surjam dúvidas ao decorrer dos seus estudos.

Grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.
solução!

Muito Obrigada, Adrielli!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software