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>