3
respostas

Fiz o Jogo do Cobrinha .... Versão III

Essa está mais interessante.

Novidades:

  • O jogo interage com o usuário para saber qual a velocidade que ele quer.
  • Tem barreiras que tornam o jogo mais difícil.

Melhorias para próximas versões:

  • fazer versões do jogo em fácil, intermediário e difícil.

Espero ter ajudado. Sucesso na sua jornada!!

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

<script>

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


    function desenharCirculos (x, y, raio, cor) {

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

    function desenharAlvo (x, y, raio, cor) {

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

    function desenharBorda() {

        pincel.fillStyle = "black";
        pincel.fillRect (0, 0, 600, 10); // topo
        pincel.fillRect (0, 0, 10, 400); // esquerda
        pincel.fillRect (0, 390, 600, 10); //fundo
        pincel.fillRect (590, 0, 10, 400); // direita

    }

    function blocosNivelHard(){
        pincel.fillStyle = "black";
        pincel.fillRect (100, 100, 130, 10); // 1 esq
        pincel.fillRect (150, 200, 40, 110); // 2 esq
        pincel.fillRect (400, 120, 120, 20); // 1 dir
        pincel.fillRect (430, 220, 30, 100); // 2 dir

    }

    function limparTela () {

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

    var xa = Math.round(Math.random()*600);
        while (xa >= 0 && xa <= 20 || xa >= 580 && xa <= 600 || xa >= 85 && xa <= 245 || xa >= 135 && xa <= 205 || xa >= 385 && xa <= 535 || xa >= 415 && xa <= 475){
            xa = Math.round(Math.random()*600);
        }

    var ya = Math.round(Math.random()*400);
        while (ya >= 0 && ya <= 20 || ya >= 380 && ya <= 400 || ya >= 85 && ya <= 125|| ya >= 185 && ya <= 325 || ya >= 105 && ya <= 155 || ya >= 205 && ya <= 335){
            ya = Math.round(Math.random()*400);
        }

    var velocidade = prompt("Digite a velocidade entre 1 (mais rápido) e 10 (mais devagar).");
        while (velocidade == 0 || velocidade >10){
            velocidade = prompt("Digite a velocidade entre 1 e 10");
        }

    //var xa = 475;

    //var ya = 205; 



    var x = 300;

    var y = 200;

    var começar = true;

    function cobrinha(){

        if (começar) {                    
                    if (x == 19 || x == 581 || y == 19 || y == 381){
                            começar = false;
                            pincel.fillStyle = "red"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("# Ops, Você Perdeu! #", 150, 200);

                    }

                    else if (x >= 91 && x <= 239 && y >= 91 && y <= 119){ // pincel.fillRect (100, 100, 130, 10); // 1 esq
                            começar = false;
                            pincel.fillStyle = "red"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("# Ops, Você Perdeu! #", 150, 200);
                    }

                    else if (x >= 141 && x <= 199 && y >= 191 && y <= 319){ // pincel.fillRect (150, 200, 40, 110); // 2 esq
                            começar = false;
                            pincel.fillStyle = "red"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("# Ops, Você Perdeu! #", 150, 200);
                    }

                    else if (x >= 391 && x <= 529 && y >= 111 && y <= 149){ //  pincel.fillRect (400, 120, 120, 20); // 1 dir
                            começar = false;
                            pincel.fillStyle = "red"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("# Ops, Você Perdeu! #", 150, 200);
                    }

                    else if (x >= 421 && x <= 469 && y >= 211 && y <= 329){ //  pincel.fillRect (430, 220, 30, 100); // 2 dir
                            começar = false;
                            pincel.fillStyle = "red"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("# Ops, Você Perdeu! #", 150, 200);
                    }


                    else if (x >= xa - 10 && x <= xa + 10 && y >= ya - 10 && y <= ya + 10){
                            começar = false;
                            pincel.fillStyle = "green"
                            pincel.fillRect (10, 10, 580, 380);
                            pincel.fillStyle = "white";
                            pincel.font = "30px Georgia"
                            pincel.fillText ("Parabéns, você acertou!!!", 130, 200);
                    }
        else {

            limparTela ();
            desenharCirculos (x, y, 10, "blue");
            desenharAlvo(xa, ya, 8, "red");
            desenharBorda();
            blocosNivelHard();

                if (tecla == 37){ //esquerda
                    x = x - 1;
                }
                if (tecla == 38){ //cima
                    y = y - 1;
                    x
                }
                if (tecla == 39){ //direta
                    x = x + 1;
                    y
                }
                if (tecla == 40){ //baixo
                    y = y + 1;
                    x
                }
        }
    }                
}

    setInterval (cobrinha, velocidade);
    //setInterval (cobrinha, 3);

    var tecla = 0;
    function leDoTeclado(evento) {    
        tecla = evento.keyCode;        
    }    
    document.onkeydown = leDoTeclado;
</script>
3 respostas

Brilhante! pfv mantenha atualizado!

Fala, Victor.

Melhorou, mas ainda tem como melhorar mais.

Tipo:

Nos níveis intermediário e difícil a posição das barreiras serem diferentes a cada nova partida.

Irei demorar um pouco mais para atualizar, pq quando pego para arrumar vai um tempo legal. Como eu comecei outro curso no Alura, então fica foda de parar para mexer em projeto fora do curso atual. kkk Mas a gente vai aos poucos.

Abraço.

Fala, Diógenes. Realmente é um desafio essa troca de níveis! Depois de ver o seu esforço nesse projeto eu me animei e aprimorei o jogo do tiro ao alvo. Existem alguns erros ainda. Porém, acredito que assim como eu aprendi com seu código, você poça fazer bom proveito do meu. Acredito que essas trocas de fases sejam fáceis de fazer com implementação de botões.https://cursos.alura.com.br/forum/topico-compartilhe-e-absorva-conhecimento-implementando-botoes-de-dificuldades-e-limitador-de-margem-201609 Dá uma olhadinha quando tiver tempo. Abraço.