Mostrando postagens com marcador Liceu. Mostrar todas as postagens
Mostrando postagens com marcador Liceu. Mostrar todas as postagens

sexta-feira, 11 de outubro de 2019

TRABALHO 4 BIMESTRE - ENSINO MÉDIO LICEU

SEGUE O MATERIAL DA AULA PARA O TRABALHO DO 4º BIMESTRE DE INFORMÁTICA.

MANUAL:Material da Aula
ARQUIVO:Trabalho ABNT

ENVIAR POR E-MAIL PARA: rodliceu@gmail.com

sexta-feira, 13 de setembro de 2019

Teste Inimigo - java Script

teste-inimigo-fundo.html

<!DOCTYPE html>
<html>
<head>
   <title>Nave, inimigos e fundo</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>
   <script src="fundo.js"></script>
</head>
<body>
   <canvas id="canvas_inimigos" width="500" height="500"></canvas>
   <script>
      // Imagens
      var imgEspaco = new Image();
      imgEspaco.src = 'img/fundo-espaco.png';
      imgEspaco.onload = carregando;

      var imgEstrelas = new Image();
      imgEstrelas.src = 'img/fundo-estrelas.png';
      imgEstrelas.onload = carregando;

      var imgNuvens = new Image();
      imgNuvens.src = 'img/fundo-nuvens.png';
      imgNuvens.onload = carregando;
     
      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
      // Primeiro os objetos do game engine
      var canvas = document.getElementById('canvas_inimigos');
      var context = canvas.getContext('2d');
     
      var teclado = new Teclado(document);
      var animacao = new Animacao(context);
     
      // Em seguida as imagens de fundo
      var fundo1 = new Fundo(context, imgEspaco);
      fundo1.velocidade = 3;
      animacao.novoSprite(fundo1);
     
      var fundo2 = new Fundo(context, imgEstrelas);
      fundo2.velocidade = 3;
      animacao.novoSprite(fundo2);
     
      var fundo3 = new Fundo(context, imgNuvens);
      fundo3.velocidade = 10;
      animacao.novoSprite(fundo3);
     
      // Depois do fundo, a nave e outros sprites
      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;
      var total = 5;
     
      function carregando() {
         carregadas++;
         if (carregadas == total) iniciar();
      }     
      function iniciar() {
         nave.x = canvas.width / 2 - imgNave.width / 2;
         nave.y = canvas.height - imgNave.height;
         nave.velocidade = 5;
         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>


-------------------------------------------------------------------------------------------------
fundo.js

function Fundo(context, imagem) {
   this.context = context;
   this.imagem = imagem;
   this.velocidade = 0;
   this.posicaoEmenda = 0;
}
Fundo.prototype = {
   atualizar: function() {
      // Atualizar a posição de emenda
      this.posicaoEmenda += this.velocidade;
     
      // Emenda passou da posição
      if (this.posicaoEmenda > this.imagem.height)
         this.posicaoEmenda = 0;
   },
   desenhar: function() {
      var img = this.imagem;  // Para facilitar a escrita :D
     
      // Primeira cópia
      var posicaoY = this.posicaoEmenda - img.height;
      this.context.drawImage(img, 0, posicaoY, img.width, img.height);
     
      // Segunda cópia
      posicaoY = this.posicaoEmenda;
      this.context.drawImage(img, 0, posicaoY, img.width, img.height);   
   }
}

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);
      }
   }
}

sexta-feira, 16 de agosto de 2019

aula 12 - animação controlada Nave

Segue os códigos da Aula
animacao.js
teclado.js
---------------------------------------------------------------------------------
nave.js

function Nave(context, teclado, imagem) {
   this.context = context;
   this.teclado = teclado;
   this.imagem = imagem;
   this.x = 0;
   this.y = 0;
   this.velocidade = 0;
}
Nave.prototype = {
   atualizar: function() {
      if (this.teclado.pressionada(SETA_ESQUERDA) && this.x > 0)
         this.x -= this.velocidade;
       
      if (this.teclado.pressionada(SETA_DIREITA) &&
               this.x < this.context.canvas.width
   - this.imagem.width)
         this.x += this.velocidade;
       
      if (this.teclado.pressionada(SETA_ACIMA) && this.y > 0)
         this.y -= this.velocidade;
       
      if (this.teclado.pressionada(SETA_ABAIXO) &&
               this.y < this.context.canvas.height
   - this.imagem.height)
         this.y += this.velocidade;
   },
   desenhar: function() {
      this.context.drawImage(this.imagem, this.x, this.y,
            this.imagem.width, this.imagem.height);
   }
 }
---------------------------------------------------------------------------------------------------------

teste-nave.html
<!DOCTYPE html>
<html>

<head>
   <title>Nave Espacial Controlável</title>
   <script src="animacao.js"></script>
   <script src="teclado.js"></script>
   <script src="nave.js"></script>
</head>
<body>
   <canvas id="canvas_nave" width="500" height="500"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('canvas_nave');
      var context = canvas.getContext('2d');
     
      // Teclado e animação (game engine)
      var teclado = new Teclado(document);
      var animacao = new Animacao(context);
     
      // Sprite da nave e sua imagem
      var imgNave = new Image();
      imgNave.src = 'img/nave.png';
  imgNave.width=50; // alterar a largura da imagem
  imgNave.height=50;  //alterar a altura da imagem     
      var nave = new Nave(context, teclado, imgNave);
      animacao.novoSprite(nave);     
      // Quando carregar a imagem, iniciar a animação
      imgNave.onload = function() {
         // Centralizada na horizontal, alinhada embaixo na vertical
         nave.x = canvas.width / 2 - imgNave.width / 2;
         nave.y = canvas.height - imgNave.height;
         nave.velocidade = 5;
         animacao.ligar();
      }
   </script>
</body>
</html>

sexta-feira, 9 de agosto de 2019

Aula 11 - Fundo com animação

fundo.js

function Fundo(context, imagem) {
   this.context = context;
   this.imagem = imagem;
   this.velocidade = 0;
   this.posicaoEmenda = 0;
}
Fundo.prototype = {
   atualizar: function() {
      // Atualizar a posição de emenda
      this.posicaoEmenda += this.velocidade;
     
      // Emenda passou da posição
      if (this.posicaoEmenda > this.imagem.height)
         this.posicaoEmenda = 0;
   },
   desenhar: function() {
      var img = this.imagem;  // Para facilitar a escrita :D
     
      // Primeira cópia
      var posicaoY = this.posicaoEmenda - img.height;
      this.context.drawImage(img, 0, posicaoY, img.width, img.height);
     
      // Segunda cópia
      posicaoY = this.posicaoEmenda;
      this.context.drawImage(img, 0, posicaoY, img.width, img.height);   
   }
}
------------------------------------------------------------------------------------------------------
teste-fundo.html
<!DOCTYPE html>
<html>
<head>
   <title>Fundos rolando em Parallax</title>
   <script src="animacao.js"></script>
   <script src="fundo.js"></script>
</head>

<body>
   <canvas id="canvas_fundo" width="500" height="500"></canvas>
   <script>
      var imgEspaco = new Image();
      imgEspaco.src = 'img/fundo-espaco.png';

      var imgEstrelas = new Image();
      imgEstrelas.src = 'img/fundo-estrelas.png';

      var imgNuvens = new Image();
      imgNuvens.src = 'img/fundo-nuvens.png';

      var carregadas = 0;
      var total = 3;
     
      imgEspaco.onload = carregando;
      imgEstrelas.onload = carregando;
      imgNuvens.onload = carregando;
     
      function carregando() {
         carregadas++;
         if (carregadas == total) iniciar();
      }

      function iniciar() {
         var canvas = document.getElementById('canvas_fundo');
         var context = canvas.getContext('2d');
       
         // Passo o context e a imagem para os objetos Fundo
         var fundoEspaco = new Fundo(context, imgEspaco);
         var fundoEstrelas = new Fundo(context, imgEstrelas);
         var fundoNuvens = new Fundo(context, imgNuvens);

         // Cada um a uma velocidade diferente
         fundoEspaco.velocidade = 3;
         fundoEstrelas.velocidade = 7;
         fundoNuvens.velocidade = 10;
       
         var animacao = new Animacao(context);
         animacao.novoSprite(fundoEspaco);
         animacao.novoSprite(fundoEstrelas);
         animacao.novoSprite(fundoNuvens);
         animacao.ligar();
      }
   </script>
</body>
 
</html>
--------------------------------------------------------------------------------------------
animacao.js

function Animacao(context) {
   this.context = context;
   this.sprites = [];
   this.ligado = false;
}
Animacao.prototype = {
   novoSprite: function(sprite) {
      this.sprites.push(sprite);
      sprite.animacao = this;
   },
   ligar: function() {
      this.ligado = true;
      this.proximoFrame();
   },
   desligar: function() {
      this.ligado = false;
   },
   proximoFrame: function() {
      // Posso continuar?
      if ( ! this.ligado ) return;

      // A cada ciclo, limpamos a tela ou desenhamos um fundo
      this.limparTela();

      // Atualizamos o estado dos sprites
      for (var i in this.sprites)
         this.sprites[i].atualizar();

      // Desenhamos os sprites
      for (var i in this.sprites)
         this.sprites[i].desenhar();

      // Chamamos o próximo ciclo
      var animacao = this;
      requestAnimationFrame(function() {
         animacao.proximoFrame();
      });
   },
   limparTela: function() {
      var ctx = this.context;
      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
   }
}

sexta-feira, 28 de junho de 2019

Aula 10 - animação sonic com teclado

sonic.html

<!DOCTYPE html>
<html>
<head>
   <title>Personagem controlável e animado</title>
   <script src="spritesheet.js"></script>
   <script src="animacao.js"></script>
   <script src="teclado.js"></script>
   <script src="sonic.js"></script>
</head>

<body>
   <canvas id="canvas_sonic" width="500" height="500"></canvas>
   <script>
      var canvas = document.getElementById('canvas_sonic');
      var context = canvas.getContext('2d');

      var teclado = new Teclado(document);
      var animacao = new Animacao(context);

      var imgSonic = new Image();
      imgSonic.src = 'spritesheet.png';

      var sonic = new Sonic(context, teclado, imgSonic);
      sonic.x = 0;
      sonic.y = 200;
      animacao.novoSprite(sonic);

      imgSonic.onload = function() {
         animacao.ligar();
      }
   </script>
</body>
</html>
---------------------------------------------------------------------------------------------------

sonic.js

var SONIC_DIREITA = 1;
var SONIC_ESQUERDA = 2;

function Sonic(context, teclado, imagem) {
   this.context = context;
   this.teclado = teclado;
   this.x = 0;
   this.y = 0;
   this.velocidade = 10;
   // Criando a spritesheet a partir da imagem recebida
   this.sheet = new Spritesheet(context, imagem, 3, 8);
   this.sheet.intervalo = 60;
   // Estado inicial
   this.andando = false;
   this.direcao = SONIC_DIREITA;
}
Sonic.prototype = {
   atualizar: function() {
      if (this.teclado.pressionada(SETA_DIREITA)) {
         // Se já não estava neste estado...
         if (! this.andando || this.direcao != SONIC_DIREITA) {
            // Seleciono o quadro da spritesheet
            this.sheet.linha = 1;
            this.sheet.coluna = 0;
         }

         // Configuro o estado atual
         this.andando = true;
         this.direcao = SONIC_DIREITA;

         // Neste estado, a animação da spritesheet deve rodar
         this.sheet.proximoQuadro();

         // Desloco o Sonic
         this.x += this.velocidade;
      }

      else if (this.teclado.pressionada(SETA_ESQUERDA)) {
         if (! this.andando || this.direcao != SONIC_ESQUERDA) {
            this.sheet.linha = 2;  // Atenção, aqui será 2!
            this.sheet.coluna = 0;
         }
         this.andando = true;
         this.direcao = SONIC_ESQUERDA;
         this.sheet.proximoQuadro();
         this.x -= this.velocidade;  // E aqui é sinal de menos!
      }

      else {
         if (this.direcao == SONIC_DIREITA)
            this.sheet.coluna = 0;
         else if (this.direcao == SONIC_ESQUERDA)
            this.sheet.coluna = 1;

         this.sheet.linha = 0;
         // Não chamo proximoQuadro!
         this.andando = false;
      }
   },
   desenhar: function() {
      this.sheet.desenhar(this.x, this.y);       
   }
}
----------------------------------------------------------------------------------------------------------


Spritesheet.js

function Spritesheet(context, imagem, linhas, colunas) {
   this.context = context;
   this.imagem = imagem;
   this.numLinhas = linhas;
   this.numColunas = colunas;
   this.intervalo = 0;
   this.linha = 0;
   this.coluna = 0;
}
Spritesheet.prototype = {
   proximoQuadro: function() {
      var agora = new Date().getTime();

      // Se ainda não tem último tempo medido
      if (! this.ultimoTempo) this.ultimoTempo = agora;

      // Já é hora de mudar de coluna?
      if (agora - this.ultimoTempo < this.intervalo) return;

      if (this.coluna < this.numColunas - 1)
         this.coluna++;
      else
         this.coluna = 0;

      // Guardar hora da última mudança
      this.ultimoTempo = agora;
   },
   desenhar: function(x, y) {
      var largura = this.imagem.width / this.numColunas;
      var altura = this.imagem.height / this.numLinhas;

      this.context.drawImage(
         this.imagem,
         largura * this.coluna,
         altura * this.linha,
         largura,
         altura,
         x,
         y,
         largura,
         altura
      );
   }
}
----------------------------------------------------------------------------------------------------
animacao.js

function Animacao(context) {
   this.context = context;
   this.sprites = [];
   this.ligado = false;
}
Animacao.prototype = {
   novoSprite: function(sprite) {
      this.sprites.push(sprite);
   },
   ligar: function() {
      this.ligado = true;
      this.proximoFrame();
   },
   desligar: function() {
      this.ligado = false;
   },
   proximoFrame: function() {
      // Posso continuar?
      if ( ! this.ligado ) return;

      // A cada ciclo, limpamos a tela ou desenhamos um fundo
      this.limparTela();

      // Atualizamos o estado dos sprites
      for (var i in this.sprites)
         this.sprites[i].atualizar();

      // Desenhamos os sprites
      for (var i in this.sprites)
         this.sprites[i].desenhar();

      // Chamamos o próximo ciclo
      var animacao = this;
      requestAnimationFrame(function() {
         animacao.proximoFrame();
      });
   },
   limparTela: function() {
      var ctx = this.context;
      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
   }
}
---------------------------------------------------------------------------------------------

teclado.js

// Códigos de teclas - aqui vão todos os que forem necessários
var SETA_ESQUERDA = 37;
var SETA_DIREITA = 39;
var ESPACO = 32;

function Teclado(elemento) {
   this.elemento = elemento;

   // Array de teclas pressionadas
   this.pressionadas = [];

   // Array de teclas disparadas
   this.disparadas = [];

   // Funções de disparo registradas
   this.funcoesDisparo = [];

   var teclado = this;

   elemento.addEventListener('keydown', function(evento) {
      var tecla = evento.keyCode;  // Tornando mais legível ;)
      teclado.pressionadas[tecla] = true;

      // Disparar somente se for o primeiro keydown da tecla
      if (teclado.funcoesDisparo[tecla] && !teclado.disparadas[tecla]) {

          teclado.disparadas[tecla] = true;
          teclado.funcoesDisparo[tecla] () ;
      }
   });

   elemento.addEventListener('keyup', function(evento) {
      teclado.pressionadas[evento.keyCode] = false;
      teclado.disparadas[evento.keyCode] = false;
   });
}
Teclado.prototype = {
   pressionada: function(tecla) {
      return this.pressionadas[tecla];
   },
   disparou: function(tecla, callback) {
      this.funcoesDisparo[tecla] = callback;
   }
}


sexta-feira, 31 de maio de 2019

Desafio aula 8

código aula 8

<!DOCTYPE html>
<html>
<head>
   <title>Movimentando personagem com keydown</title>
   <style type="text/css">
canvas {  border: 1px solid #000000; }
</style>
</head>
<body>
   <canvas id="canvas_teclado_1" width="500" height="300"></canvas>
   <script>
      // Referências do Canvas
    var canvas = document.getElementById('canvas_teclado_1');
    var context = canvas.getContext('2d');
      // Posição inicial do personagem
      var posicao = 0;
      desenharPersonagem();
      // Listener
      document.addEventListener('keydown', function(evento) {
         if (evento.keyCode == 37) {  // Seta para esquerda
            posicao -= 10;
            desenharPersonagem();
         }
         else if (evento.keyCode == 39) {  // Seta para direita
            posicao += 10;
            desenharPersonagem();
         }
      });
      // Um personagem não muito simpático, mas...
      function desenharPersonagem() {
      var imagem = new Image();
      imagem.src = 'img/img.jpeg';
      imagem.onload = function() {
  context.clearRect(0, 0, canvas.width, canvas.height);
  context.drawImage(imagem, posicao, 100, 80, 80); 
         }
//context.clearRect(0, 0, canvas.width, canvas.height);
         //context.fillRect(posicao, 100, 20, 50);
      }
   </script>
</body>
</html>

Aula 8 - animação pong

Segue a animação Pong.

<!DOCTYPE html>
<html>
    <head>
        <title>Seu Primeiro Jogo Pong - HTML5</title>
<meta name="author" content="rodrigo braga"></meta>
<style type="text/css">
canvas {
  border: 1px solid #000000;
}
</style>
    </head> 
    <body  onload="inicializar()">
<canvas id="canvas" width="600" height="480">
Navegador não suporta HTML5
</canvas>
<script type="text/javascript">
var barraAltura, barraLargura, jogadorPosicaoX,
velocidadeJogador, bolaDiametro, bolaPosX,
bolaPosY, velocidadeBola, pontosJogador, colisao;

function inicializar()
{
barraAltura = 15;
barraLargura = 90;
pontosJogador = 0;
jogadorPosicaoX = (canvas.width - barraLargura) / 2;
velocidadeJogador = 20;

canvas = document.getElementById("canvas");
context = canvas.getContext("2d");

                bolaDiametro = 10;
                bolaPosX = canvas.width / 2;
                bolaPosY = -10;
velocidadeBola = 10;
colisao = false;

document.addEventListener('keydown', keyDown);
setInterval(gameLoop, 30);
}

function keyDown(e)
{
if(e.keyCode == 37)
{
if(jogadorPosicaoX > 0)
{
jogadorPosicaoX -= velocidadeJogador;
}
}
if(e.keyCode == 39)
{
if(jogadorPosicaoX < (canvas.width - barraLargura))
{
jogadorPosicaoX += velocidadeJogador;
}
}
}
function gameLoop()
{
//Limpa Tela
context.clearRect(0, 0, canvas.width, canvas.height);
// Bola
context.beginPath();
                context.arc(bolaPosX, bolaPosY, bolaDiametro, 0,
Math.PI * 2, true);
                context.fill();
context.fillStyle ='red';

if(bolaPosY <= canvas.height)
{
bolaPosY += velocidadeBola;
}
else
{
bolaPosX = Math.random() * 600;
bolaPosY = -10;
colisao = false;
}
// Checar Colisão
/*Em seguida vamos pensar na matemática da colisão */
if((bolaPosX > jogadorPosicaoX &&
bolaPosX < jogadorPosicaoX + barraLargura) &&
bolaPosY >= canvas.height - barraAltura &&
colisao == false)
{
pontosJogador++;
colisao = true;
}
// Escreve placar
                context.font = "32pt Tahoma";
context.fillText(pontosJogador, canvas.width - 70, 50);
context.fillText("Liceu", canvas.width - 200, 50);
// Jogador
context.fillRect(jogadorPosicaoX, canvas.height -
barraAltura, barraLargura, barraAltura);
}
</script>
</body>
</html>

sexta-feira, 24 de maio de 2019

Aula 7 - Teclado_teste_3

Seguem os códigos da aula 7
teclado.js -> já feito
animacao.js -> já feito

teclado_teste_3
<!DOCTYPE html>
<html>
<head>
   <title>Um heroi que atira</title>
   <script src="teclado.js"></script>
   <script src="heroi.js"></script>
   <script src="bola.js"></script>
   <script src="animacao.js"></script>
</head>
<body>
   <canvas id="canvas_teclado_3" width="500" height="500"></canvas>
   <script>
      var canvas = document.getElementById('canvas_teclado_3');
      var context = canvas.getContext('2d');
      var teclado = new Teclado(document);
      var animacao = new Animacao(context);

      // Um sprite pode ler o teclado para saber como se comportar, por que não?
      var heroi = new Heroi(context, teclado, animacao);
      heroi.x = 0;
      heroi.y = 100;
      animacao.novoSprite(heroi);

      teclado.disparou(ESPACO, function() {
         heroi.atirar();
      });
      animacao.ligar();
   </script>
</body>
</html>
-------------------------------------------------------------------------------------------------------
bola.js

function Bola(context) {
   this.context = context;
   this.x = 0;
   this.y = 0;
   this.velocidadeX = 0;
   this.velocidadeY = 0;

   // Atributos de desenho padrão
   this.cor = 'black';
   this.raio = 10;
}
Bola.prototype = {
   atualizar: function() {
      var ctx = this.context;
      this.x += this.velocidadeX;
      this.y += this.velocidadeY;
   },
   desenhar: function() {
      var ctx = this.context;   
      // Guardar configurações atuais do contexto
      ctx.save();
      // Configurar o contexto de acordo com a bola
      ctx.fillStyle = this.cor;
      // Desenhar
      ctx.beginPath();
      ctx.arc(this.x, this.y, this.raio, 0, 2 * Math.PI, false);
      ctx.fill();
      // Voltar às configurações anteriores
      ctx.restore();   
   }
}
----------------------------------------------------------------------------------
heroi.js

// Códigos únicos para as direções
var DIRECAO_ESQUERDA = 1;
var DIRECAO_DIREITA = 2;

function Heroi(context, teclado, animacao) {
   this.context = context;
   this.teclado = teclado;
   this.animacao = animacao;
   this.x = 0;
   this.y = 0;
   this.direcao = DIRECAO_DIREITA;
}
Heroi.prototype = {
   atualizar: function() {
      if (this.teclado.pressionada(SETA_ESQUERDA) && this.x > 0) {
         this.direcao = DIRECAO_ESQUERDA;
         this.x -= 10;
      }
      else if (this.teclado.pressionada(SETA_DIREITA) &&
               this.x < this.context.canvas.width - 20) {
         this.direcao = DIRECAO_DIREITA;
         this.x += 10;
      }
   },
   desenhar: function() {
      this.context.fillRect(this.x, this.y, 20, 50);
   },
   atirar: function() {
      var tiro = new Bola(this.context);
      tiro.x = this.x + 10;
      tiro.y = this.y + 10;
      tiro.raio = 10;
      tiro.cor = 'red';
      // Lendo a direção atual
      if (this.direcao == DIRECAO_ESQUERDA)
         tiro.velocidadeX = -20;
      else
         tiro.velocidadeX = 20;
      this.animacao.novoSprite(tiro);
   }
}

Aula 7 - Teclado teste-2

Segue o código da aula: teclado-teste-2.html

<!DOCTYPE html>
<html>
<head>
   <title>Movimentando personagem com classe JavaScript</title>
   <script src="teclado.js"></script>
</head>

<body>
   <canvas id="canvas_teclado_2" width="500" height="500"></canvas>
   <script>
      // Referências do Canvas
      var canvas = document.getElementById('canvas_teclado_2');
      var context = canvas.getContext('2d');

      // Posição inicial do personagem
      var posicao = 0;
      desenharPersonagem();

      // Controlador do teclado
      var teclado = new Teclado(document);
   
      // Um loop de animação básico
      requestAnimationFrame(animar);
   
      function animar() {
         if (teclado.pressionada(SETA_ESQUERDA))
            posicao -= 10;
         else if (teclado.pressionada(SETA_DIREITA))
            posicao += 10;
         desenharPersonagem();
         requestAnimationFrame(animar);
      }
      // Nosso heroi continua esbanjando charme!
      function desenharPersonagem() {
         context.clearRect(0, 0, canvas.width, canvas.height);
         context.fillRect(posicao, 100, 20, 50);
      }
   </script>
</body>

</html>
-----------------------------------------------------------------------------------------------------------
 Teclado.js

// Códigos de teclas - aqui vão todos os que forem necessários
var SETA_ESQUERDA = 37;
var SETA_DIREITA = 39;
var ESPACO = 32;

function Teclado(elemento) {
   this.elemento = elemento;
   // Array de teclas pressionadas
   this.pressionadas = [];
   // Array de teclas disparadas
   this.disparadas = [];
   // Funções de disparo registradas
   this.funcoesDisparo = [];
   var teclado = this;

   elemento.addEventListener('keydown', function(evento) {
      var tecla = evento.keyCode;  // Tornando mais legível ;)
      teclado.pressionadas[tecla] = true;

      // Disparar somente se for o primeiro keydown da tecla
      if (teclado.funcoesDisparo[tecla] && !teclado.disparadas[tecla]) {

          teclado.disparadas[tecla] = true;
          teclado.funcoesDisparo[tecla] () ;
      }
   });

   elemento.addEventListener('keyup', function(evento) {
      teclado.pressionadas[evento.keyCode] = false;
      teclado.disparadas[evento.keyCode] = false;
   });
}
Teclado.prototype = {
   pressionada: function(tecla) {
      return this.pressionadas[tecla];
   },
   disparou: function(tecla, callback) {
      this.funcoesDisparo[tecla] = callback;
   }
}

sexta-feira, 17 de maio de 2019

Exercício keypress - Aula 6

Exercício KeyPress

Teclado1.html

<!DOCTYPE html>
<html>
<head>
   <title>Movimentando personagem com keydown</title>
</head>
<body>
 <canvas id="canvas_teclado_1" width="500" height="500"></canvas>
   <script>
      // Referências do Canvas
    var canvas = document.getElementById('canvas_teclado_1');
    var context = canvas.getContext('2d');
      // Posição inicial do personagem
      var posicao = 0;
      desenharPersonagem();
      // Listener
      document.addEventListener('keydown', function(evento) {
         if (evento.keyCode == 37) {  // Seta para esquerda
            posicao -= 10;
            desenharPersonagem();
         }
         else if (evento.keyCode == 39) {  // Seta para direita
            posicao += 10;
            desenharPersonagem();
         }
      });
      // Um personagem não muito simpático, mas...
      function desenharPersonagem() {
         context.clearRect(0, 0, canvas.width, canvas.height);
         context.fillRect(posicao, 100, 20, 50);
}
   </script>
</body>
</html>

EXEMPLO ANIMACAO.HTML AULA6

EXEMPLO6 ANIMACAO.HTML

<!DOCTYPE html>
<html>
<head>
   <title>Primeiro Teste: Loop de Animação com Sprites</title>
   <script src="animacao.js"></script>
   <script src="bola.js"></script>
</head>
<body>
  <canvas id="canvas_animacao" width="500" height="500"></canvas>
   <script>
      // Referências para o Canvas
      var canvas = document.getElementById('canvas_animacao');
      var context = canvas.getContext('2d');
      // Criando alguns sprites
      var b1 = new Bola(context);
      b1.x = 100;
      b1.y = 200;
      b1.velocidadeX = 20;
      b1.velocidadeY = -10;
      b1.cor = 'red';
      b1.raio = 20;
   
      var b2 = new Bola(context);
      b2.x = 200;
      b2.y = 100;
      b2.velocidadeX = -10;
      b2.velocidadeY = 20;
      b2.cor = 'blue';
      b2.raio = 30;
      // Criando o loop de animação
      var animacao = new Animacao(context);
      animacao.novoSprite(b1);
      animacao.novoSprite(b2);
      // "Ligar" a animação
      animacao.ligar();
   </script>
</body>
</html>

EXEMPLO ANIMACAO.JS AULA6

EXEMPLO AULA 6

ANIMACAO.JS

function Animacao(context) {
   this.context = context;
   this.sprites = [];
   this.ligado = false;
}
Animacao.prototype = {
   novoSprite: function(sprite) {
      this.sprites.push(sprite);
   },
   ligar: function() {
      this.ligado = true;
      this.proximoFrame();
   },
   desligar: function() {
      this.ligado = false;
   },
   proximoFrame: function() {
      // Posso continuar?
      if ( ! this.ligado ) return;

      // A cada ciclo, limpamos a tela ou desenhamos um fundo
      this.limparTela();

      // Atualizamos o estado dos sprites
      for (var i in this.sprites)
         this.sprites[i].atualizar();

      // Desenhamos os sprites
      for (var i in this.sprites)
         this.sprites[i].desenhar();

      // Chamamos o próximo ciclo
      var animacao = this;
      requestAnimationFrame(function() {
         animacao.proximoFrame();
      });
   },
   limparTela: function() {
      var ctx = this.context;
      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
   }
}

sexta-feira, 10 de maio de 2019

Aula5- Bola.js

Exemplo aula 5
bola.js

function Bola(context) {
   this.context = context;
   this.x = 0;
   this.y = 0;
   this.velocidadeX = 0;
   this.velocidadeY = 0;
   // Atributos de desenho padrão
   this.cor = 'black';
   this.raio = 10;
}
Bola.prototype = {
   atualizar: function() {
      var ctx = this.context;
      if (this.x < this.raio || this.x > ctx.canvas.width
  - this.raio)this.velocidadeX *= -1;
      if (this.y < this.raio || this.y > ctx.canvas.height
  - this.raio)this.velocidadeY *= -1;
      this.x += this.velocidadeX;
      this.y += this.velocidadeY;
   },
   desenhar: function() {
      var ctx = this.context;     
      // Guardar configurações atuais do contexto
      ctx.save();
      // Configurar o contexto de acordo com a bola
      ctx.fillStyle = this.cor;
      // Desenhar
      ctx.beginPath();
      ctx.arc(this.x, this.y, this.raio, 0, 2 * Math.PI, false);
      ctx.fill();
      // Voltar às configurações anteriores
      ctx.restore();     
   }
}

Exemplo de prototype aula 5 - liceu

Segue o exemplos
 carro.js

// Função construtora
function Carro(cor, velocMaxima) {
   this.cor = cor;
   this.velocMaxima = velocMaxima;
   this.velocAtual = 0;
}

// Prototype com os métodos
Carro.prototype = {
   acelerar: function() {
      this.velocAtual += 10;
  this.velocMaxima=this.velocAtual+this.velocMaxima;
   }
}
----------------------------------------------------------------------------------------------
prototype.html

<!DOCTYPE html>
<html>
<head><title>O prototype</title>
   <script src="carro.js"></script></head>
<body>
  <script>
  var meuCarro = new Carro('vermelho', 250);
  document.write(meuCarro.cor + '1 :velocidade atual '
  +meuCarro.velocAtual+"</br>");
  document.write(meuCarro.cor + '2 :velocidade maxima '
  +meuCarro.velocMaxima+"</br>");
  meuCarro.acelerar();
  meuCarro.acelerar();
  meuCarro.acelerar();
  document.write(meuCarro.cor + '3:velocidade atual : '
  +meuCarro.velocAtual);
  </script>
</body>
</html>



Orientação a objetos - Liceu

Exemplo do código de Orientação a Objetos Javascript

<!DOCTYPE html>
<html>
<head>
   <title>Orientação a objetos</title>
</head>
<body>
   <script>
      function Carro(cor, velocMaxima) {
         // Criando os atributos
         this.cor = cor;
         this.velocMaxima = velocMaxima;
         this.velocAtual = 0;       
         // Criando um método
         this.acelerar = function() {
            this.velocAtual = 50;
         }
      }     
      // Instanciando objetos da classe Carro
      var meuCarro = new Carro('vermelho', 250);
      var oponente = new Carro('azul', 300);     
      // Chamando um método somente em um objeto
      meuCarro.acelerar();     
      // Verificando as velocidades
      document.write('velocidade atual : '
  + meuCarro.cor + ': ' + meuCarro.velocAtual);
      document.write('<br>');
  document.write('velocidade maxima : '
  +meuCarro.cor + ': ' + meuCarro.velocMaxima);
      document.write('<br>');  
      document.write('velocidade atual : '
  +oponente.cor + ': ' + oponente.velocAtual);
  document.write('<br>');  
  document.write('velocidade maxima : '
  +oponente.cor + ': ' + oponente.velocMaxima);
   </script></body>
</html>

Exercício Ovini -RequestAmimationFrame

Segue o código do Exercício:

<!DOCTYPE html>
<html>
<head>
<title>Método window.requestAnimationFrame</title>
</head>
<body>
<canvas id="meu_canvas" width="500" height="600"></canvas>
<script>
//Canvas e contexto
canvas = document.getElementById('meu_canvas')
context = canvas.getContext('2d')

//Dados da posição e tamanho da imagem
var x = 20;
var y = 10;
var e = 32;
var d = 64;
var imagem = new Image();
imagem.src = 'img/ovni.png';

imagem.onload = function() {
requestAnimationFrame(mexerOvini);
}
//Momento Inicial
var anterior = new Date().getTime();

//Iniciar a animação
requestAnimationFrame(mexerOvini);

//Função de animação
function mexerOvini(){
//Momento Atual
var agora = new Date().getTime();

//Diferença
var decorrido = agora - anterior;

//Limpar o Canvas
context.clearRect(0, 0, canvas.width, canvas.height);

//Desenhar Ovini
context.beginPath();

context.drawImage(imagem,x,y,d,e);
var velocidade = 20;
y += velocidade * decorrido / 1000;
anterior = agora;
requestAnimationFrame(mexerOvini);
}
</script>
</body>
</html>

sexta-feira, 3 de maio de 2019

Exercício dos arcos olímpicos - html5

Segue os códigos do Arco Olímpicos

<DOCTYPE html>
<html>
<head>
<title>Arcos olímpicos</title>
</head>
<body>
<canvas id="meu_canvas" width="350" height="350"></canvas>
<script>
// Canvas e contexto
var canvas = document.getElementById('meu_canvas');
var context = canvas.getContext('2d');

//Iniciar o caminho(apaga desenhos anteriores)
 context.beginPath();
 context.lineWidth= 5;
 context.arc(100,60,55,0,2*Math.PI,true);
 context.strokeStyle='blue';
 context.stroke();

  context.beginPath();
  context.lineWidth= 5;
  context.arc(190,60,55,0,2*Math.PI,true);
  context.strokeStyle='black';
  context.stroke();

  context.beginPath();
  context.lineWidth= 5;
  context.arc(280,60,55,0,2*Math.PI,true);
  context.strokeStyle='red';
  context.stroke();

  context.beginPath();
  context.lineWidth= 5;
  context.arc(260,120,55,0,2*Math.PI,true);
  context.strokeStyle='yellow';
  context.stroke();

  context.beginPath();
  context.lineWidth= 5;
  context.arc(130,120,55,0,2*Math.PI,true);
  context.strokeStyle='green';
  context.stroke();
</script>
</body>
<html>

Aula 4 - Games Liceu - html5

Segue os códigos da aula 4

Exercício imagem 3

<!DOCTYPE html>
<html><head>
   <title>Imagens</title></head>
<body>
   <canvas id="meu_canvas" width="300" height="300"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('meu_canvas');
      var context = canvas.getContext('2d');   
      // Carregar a imagem
      var imagem = new Image();
      imagem.src = 'img/explosao.png';
      imagem.onload = function() {
         context.drawImage(imagem,
            80, 10, 60, 65,  // Área de recorte
            20, 20, 60, 65   // Desenho no Canvas
         );
      }
   </script>
</body>
</html>
-----------------------------------------------------------------------------------------------------------
Exercício imagem4

<!DOCTYPE html>
<html>
<head><title>Imagens</title></head>
<body>
   <canvas id="meu_canvas" width="300" height="300"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('meu_canvas');
      var context = canvas.getContext('2d');   
      // Carregar a imagem
      var imagem = new Image();
      imagem.src = 'img/explosao.png';
      imagem.onload = function() {
         context.drawImage(imagem,
            80, 10, 60, 65,  // Área de recorte
            20, 20, 60, 65   // Desenho no Canvas
         );
context.drawImage(
            imagem,
            150, 10, 60, 65,  // Área de recorte
            80, 20, 60, 65   // Desenho no Canvas
         );
      }
   </script>
</body>
</html>
-----------------------------------------------------------------------------------------------------
Exercício Save e restaure

<!DOCTYPE html>
<html>
<head><title>Métodos save e restore</title></head>
<body>
   <canvas id="meu_canvas" width="200" height="200"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('meu_canvas');
      var context = canvas.getContext('2d');
      // Um pequeno quadrado verde
      context.fillStyle = 'green';   
      context.fillRect(50, 50, 25, 25);   
      // Salvamos a configuração e subimos na pilha
      context.save();   
      // Agora um quadrado roxo
      context.fillStyle = 'purple';
      context.fillRect(100, 50, 25, 25);   
      // Voltamos para o nível anterior na pilha
      context.restore();   
      // Voltou para o verde!
      context.fillRect(150, 50, 25, 25);   
   </script>
</body>
</html>
----------------------------------------------------------------------------------------------------------

Exercício Animação1

<!DOCTYPE html>
<html>
<head>
   <title>Método window.requestAnimationFrame</title>
</head>
<body>
   <canvas id="meu_canvas" width="800" height="300"></canvas>
   <script>
      // Canvas e contexto
      canvas = document.getElementById('meu_canvas');
      context = canvas.getContext('2d');   
      // Dados da bola
      var x = 20;
      var y = 100;
      var raio = 10;      
      // Momento inicial
      var anterior = new Date().getTime();      
      // Iniciar a animação
      requestAnimationFrame(mexerBola);      
      // Função de animação
      function mexerBola() {
         // Momento atual
         var agora = new Date().getTime();         
         // Diferença
         var decorrido = agora - anterior;
         // Limpar o Canvas
         context.clearRect(0, 0, canvas.width, canvas.height);         
         // Desenhar a bola
         context.beginPath();
         context.arc(x, y, raio, 0, Math.PI*2);
         context.fill();         
         // Deslocar 20 pixels para a direita
         var velocidade = 100;
         x += velocidade * decorrido / 1000;           
         // Guardamos o instante para o próximo ciclo
         anterior = agora;         
         // Chamar o próximo ciclo da animação
         requestAnimationFrame(mexerBola);
      }      
   </script>
</body></html>

sexta-feira, 26 de abril de 2019

Aula 3 - Games Liceu - html5

Segue os códigos da aula3

Exemplo1
<!DOCTYPE html>
<html>
<head>
   <title>Bandeira do brasil</title>
</head>
<body>
   <canvas id="myCanvas" width="250" height="150"
   style="border:1px solid #d3d3d3;"/>
<script>
var c = document.getElementById("myCanvas");
var context = c.getContext("2d");

//Desenha a retângulo verde
context.fillStyle="green";
context.fillRect(0,0,250,150);

//Desenha o losango amarelo
context.fillStyle = "yellow";
context.beginPath();
context.moveTo(125,0);
context.lineTo(250,75);
context.lineTo(125,150);
context.lineTo(0, 75);
context.lineTo(125,0);
context.fill();
context.closePath();

//Desenha o círculo azul
context.beginPath();
context.fillStyle="blue";
context.arc(125,75,50,0,2*Math.PI);
context.fill();
context.closePath();

//Desenha a faixa branca
context.fillStyle="white";
context.fillRect(75,65,100,15);

//Desenha o texto
context.beginPath();
context.fillStyle="black";
context.font="10px Arial";
context.fillText("Ordem e Progresso",80,75);
context.fill();
context.closePath();
</script>
</body>
</html>
---------------------------------------------------------------------------------------------------
Exemplo2

<!DOCTYPE html>
<html>
<head>
   <title>Imagens</title>
</head>
<body>
   <canvas id="meu_canvas" width="500" height="100"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('meu_canvas');
      var context = canvas.getContext('2d');      
      // Carregar a imagem
      var imagem = new Image();
      imagem.src = 'img/ovni.png';
      imagem.onload = function() {
  context.drawImage(imagem, 20, 20, 64, 32);  
         }
   </script>
</body>
</html>
---------------------------------------------------------------------------------------------------
Exemplo3

<!DOCTYPE html>
<html>
<head>
   <title>Imagens</title>
</head>
<body>
   <canvas id="meu_canvas" width="500" height="100"></canvas>
   <script>
      // Canvas e contexto
      var canvas = document.getElementById('meu_canvas');
      var context = canvas.getContext('2d');      
      // Carregar a imagem
      var imagem = new Image();
      imagem.src = 'img/ovni.png';
      imagem.onload = function() {
         // Começar na posição 20
         var x = 20;         
         // Desenhar as imagens
         for (var i = 1; i <= 5; i++) {
            context.drawImage(imagem, x, 20, 64, 32);
            x += 70;
         }
      }
   </script>
</body>
</html>