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