1
resposta

Passando pro javascript puro

Tentei passar o que aprendi aqui neste curso com o que já havia aprendido com professor Flávio. Aqui está o código, mas sem os sons infelizmente...

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

<script>



 function bolinha(xBolinha, yBolinha, raio){

     pincel.fillStyle = 'green';
     pincel.beginPath();
     pincel.arc(xBolinha, yBolinha, raio, 0, 2*Math.PI);
     pincel.fill();
 }

 function limpaTela(){
    pincel.fillStyle = 'black';

    pincel.fillRect(0, 0, 600, 400);

 }

 function atualizaTela(){

   limpaTela();

   moveBolinha();

   raquete(x, y, larguraRaquete, alturaRaquete);

   raquete(xDois, yDois, larguraRaquete, alturaRaquete);

   movimentaRaqueteDois();

   verificaColisao();

   verificaColisaoDois();

   desenhaPlacar(130, 10, 40, 20);

   desenhaPlacar(430, 10, 40, 20);

   verificaPlacar();

 }

 function moveBolinha(){

      bolinha(xBolinha, yBolinha, raio);

      xBolinha += velocidadeXBolinha;

      yBolinha += velocidadeYBolinha;

        if(xBolinha  > 580 || xBolinha < 20 ){

            velocidadeXBolinha *= -1;

      }


         if(yBolinha > 380 || yBolinha < 20){

              velocidadeYBolinha *= -1;

         } 

   } 


 function raquete(x, y, larguraRaquete, alturaRaquete ){

   pincel.fillStyle = "red";
   pincel.fillRect(x, y, larguraRaquete, alturaRaquete);

 } 

 function movimentaRaquete(evento){

   if( cima == evento.keyCode && y > 0 ){

         y -= taxa;

      }else if(baixo == evento.keyCode && y < 400){

            y += taxa;

         }



 }

 function movimentaRaqueteDois(){

     velocidadeRaqueteDois = yBolinha - yDois - larguraRaquete /2 - 30;

     yDois += velocidadeRaqueteDois;

   }

 function verificaColisaoDois(){

     if(xBolinha + raio > xDois - larguraRaquete && yBolinha + raio > yDois - alturaRaquete && yBolinha - raio > yDois && yBolinha - raio  < yDois + alturaRaquete){

       velocidadeXBolinha *= -1;

     }



 }

 function verificaColisao(){


    if(xBolinha - raio < x + larguraRaquete && yBolinha - raio < y + alturaRaquete && yBolinha + raio > y){

         velocidadeXBolinha *= -1;

      } 


 }

 function desenhaPlacar(x, y , largura , altura,){

   pincel.fillStyle = "orange";

   pincel.fillRect(x, y , largura , altura );

   pincel.strokeStyle = "white";

   pincel.strokeRect(x, y ,largura, altura );

   desenhaTexto(145, 25, pontos );

   desenhaTexto( 445, 25, pontos2 );

 }

 function desenhaTexto(x, y, pontos){

    pincel.font = "20px Georgia";

    pincel.fillStyle = "white";

    pincel.fillText(pontos, x, y);

 }

 function verificaPlacar(){

     if(xBolinha < 20){

            pontos2++;

         }else if(xBolinha > 580){

              pontos++;

            }

 }

 function calcularChanceErro(){

    if(pontos2 >= pontos){

         chanceErro++;

      }

         if(chanceErro >= 39){

             chanceErro = 40;

         }else{

            chanceErro -= 1;

            if(chanceErro <= 35){

               chanceErro = 35;
            }
         }
 }

 function destravandoBolinha(){

     if(xBolinha - raio < 0 ){

         xBolinha = 23;

      }

 }

 var tela = document.querySelector('canvas');
 var pincel = tela.getContext('2d');

 //variaveis bolinha

 let xBolinha = 300;

 let yBolinha = 200;

 let raio = 10; 

 let velocidadeXBolinha = 10;

 let velocidadeYBolinha = 10;

 //posição da raquete 1 

 let x = 10;

 let larguraRaquete = 10;

 let y = 150;

 let alturaRaquete = 100;

 //variáveis da raquete 2 

 let xDois = 580;

 let yDois = 150;

 let velocidadeRaqueteDois;

 //códigos do teclado

 let cima = 38;

 let baixo = 40;

 //Variável da taxa de incremento

 let taxa = 15;

 //variáveis do placar

 let pontos = 0;

 let pontos2 = 0;

 pincel.fillStyle = 'black';

 pincel.fillRect(0, 0, 600, 400); 

 setInterval(atualizaTela, 50); 

 document.onkeydown = movimentaRaquete;



</script>
1 resposta

Olá Fernando, tudo bem com você? Espero que sim.

Agradeço a paciência em aguardar uma resposta para o seu tópico.

Gostaria de estar lhe parabenizando pelo seu trabalho a mais, isso mostra o quão comprometido você esta com os seus estudos, e falo em nome dos monitores e até mesmo os instrutores o tanto que isso é gratificante, sabermos que temos um aluno tão dedicado.

Se durante os seus estudos você tenha qualquer tipo de dúvida compartilhe ela no fórum, estamos aqui para lhe ajudar. Abraços e bons estudos!

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