sexta-feira, 6 de setembro de 2019

deslocamento inimigo

Segue o código do deslocamento inimigo

deslocamento_inimigo.html

<!DOCTYPE html>
<html>
<head>
   <title>Inimigos</title>
   <script src="animacao.js"></script>
   <script src="teclado.js"></script>
   <script src="nave.js"></script>
   <script src="tiro.js"></script>
   <script src="colisor.js"></script>
   <script src="ovni.js"></script>
</head>
<body>
   <canvas id="canvas_inimigos" width="500" height="500"></canvas>
   <script>
      // Imagens
      var imgNave = new Image();
      imgNave.src = 'img/nave.png';
      imgNave.onload = carregando;
     
      var imgOvni = new Image();
      imgOvni.src = 'img/ovni.png';
      imgOvni.onload = carregando;

      // Inicialização dos objetos
      var canvas = document.getElementById('canvas_inimigos');
      var context = canvas.getContext('2d');
     
      var teclado = new Teclado(document);
      var animacao = new Animacao(context);
     
      var nave = new Nave(context, teclado, imgNave);
      animacao.novoSprite(nave);
     
      var colisor = new Colisor();
      colisor.novoSprite(nave);
     
      teclado.disparou(ESPACO, function() {
         nave.atirar();
      });
     
      // Carregamento e inicialização
      var carregadas = 0;
     
      function carregando() {
         carregadas++;
         if (carregadas == 2) iniciar();
      }
     
      function iniciar() {
         nave.x = canvas.width / 2 - imgNave.width / 2;
         nave.y = canvas.height - imgNave.height;
         nave.velocidade = 10;
         animacao.ligar();
       
         setInterval(novoOvni, 1000);
      }
     
      // Criação dos inimigos
      function novoOvni() {
         var ovni = new Ovni(context, imgOvni);
         // Mínimo: 5; máximo: 20
         ovni.velocidade =
            Math.floor( 5 + Math.random() * (20 - 5 + 1) );       
       
         // Mínimo: 0; máximo: largura do canvas - largura do ovni 
         ovni.x =
            Math.floor(Math.random() *
                       (canvas.width - imgOvni.width + 1) );                 
         // Descontar a altura
         ovni.y = -imgOvni.height;       
         animacao.novoSprite(ovni);
         colisor.novoSprite(ovni);
      }
   </script>
</body>
</html>
----------------------------------------------------------------------------------------------
Ovni.js

function Ovni(context, imagem) {
   this.context = context;
   this.imagem = imagem;
   this.x = 0;
   this.y = 0;
   this.velocidade = 0;
}
Ovni.prototype = {
   atualizar: function() {
      this.y += this.velocidade;
   
      if (this.y > this.context.canvas.height) {
         this.animacao.excluirSprite(this);
         this.colisor.excluirSprite(this);
      }
   },
   desenhar: function() {
      var ctx = this.context;
      var img = this.imagem;
      ctx.drawImage(img, this.x, this.y, img.width, img.height);
   },
   retangulosColisao: function() {
      // Estes valores vão sendo ajustados aos poucos
      var rets =
      [
         {x: this.x+20, y: this.y+1, largura: 25, altura: 10},
         {x: this.x+2, y: this.y+11, largura: 60, altura: 12},
         {x: this.x+20, y: this.y+23, largura: 25, altura: 7},
      ];   
      // Desenhando os retângulos para visualização
      /*
      var ctx = this.context;
   
      for (var i in rets) {
         ctx.save();
         ctx.strokeStyle = 'yellow';
         ctx.strokeRect(rets[i].x, rets[i].y, rets[i].largura,
                        rets[i].altura);
         ctx.restore();
      }
      */
       return rets;
   },
   colidiuCom: function(outro) {
      // Se colidiu com um Tiro, os dois desaparecem
      if (outro instanceof Tiro) {
         this.animacao.excluirSprite(this);
         this.colisor.excluirSprite(this);
         this.animacao.excluirSprite(outro);
         this.colisor.excluirSprite(outro);
      }
   }
}

Nenhum comentário:

Postar um comentário