Tema: bucle
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 13/02/2015, 05:40
Avatar de nenu_racso90
nenu_racso90
 
Fecha de Ingreso: diciembre-2011
Ubicación: bilbao
Mensajes: 39
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: bucle

window.addEventListener('load',init,false);
var canvas=null,ctx=null;
var player=new Rectangle(90,0,10,10);
var enemy=new Rectangle(40,240,10,10);

var food=new Rectangle(0,80,10,30);
var food1=new Rectangle(170,80,10,30);
var food2=new Rectangle(0,200,10,30);
var food3=new Rectangle(170,200,10,30);
var lastPress=null;
var pressing=[];
var pause=false;
var gameover=false;
var score=0;
var vidas=3;
var KEY_ENTER=13;
var KEY_LEFT=37;
var KEY_RIGHT=39;
var KEY_R=82;
var KEY_ESPACE=32;
var dir=0;

function init(){
canvas=document.getElementById('canvas');
ctx=canvas.getContext('2d');
run();
repaint();

}

function run(){
setTimeout(run,100);
act();
reset();
}

function repaint(){
requestAnimationFrame(repaint);
paint(ctx);

}




function reset(){
score=0;
vidas=3;
gameover=false;
pause=false;
dir=0;
player=new Rectangle(90,0,10,10);

enemy=new Rectangle(40,240,10,10);

}

function act(){
if(!pause){





if(dir==0){
if(pressing[KEY_RIGHT])
{pressing=null;}

if(pressing[KEY_LEFT])
{pressing=null;}

if(lastPress==KEY_ENTER){
lastPress=null;}
;}


if(gameover){
dir=0;

if(lastPress==KEY_ENTER){
lastPress=null;}

if(lastPress==KEY_ESPACE){
reset();}

if(pressing[KEY_RIGHT])
{pressing=null;}

if(pressing[KEY_LEFT])
{pressing=null;}
}



if(lastPress==KEY_ESPACE){
dir=1;
lastPress=null;}

if(lastPress==KEY_R){
reset();
lastPress=null;
}

//move enemy




// Move Rect
if(dir==1){
player.y+=2;}

if(pressing[KEY_RIGHT])
{player.x+=5;}

if(pressing[KEY_LEFT])
{player.x-=5;}

// Out Screen
if(player.x>canvas.width-10)
{player.x=canvas.width-10;}

if(player.y>canvas.height){
vidas--;
player=new Rectangle(90,0,10,10);
}
if(vidas==0)
{gameover=true;}

if(player.x<0)
{player.x=0;}


if(player.y<0)
{player.y=0;}



if(player.intersects(food)){
score+=5;
player=new Rectangle(90,0,10,10);
}

if(player.intersects(food1)){
score+=10;
player=new Rectangle(90,0,10,10);
}

if(player.intersects(enemy)){
vidas-=1;
player=new Rectangle(90,0,10,10);
}
if(player.intersects(food2)){
score+=15;
player=new Rectangle(90,0,10,10);
}

if(player.intersects(food3)){
score+=20;
player=new Rectangle(90,0,10,10);
}



}

// Pause/Unpause

if(lastPress==KEY_ENTER){
pause=!pause;
lastPress=null;
}
}

function paint(ctx){
ctx.fillStyle='#000';
ctx.fillRect(0,0,canvas.width,canvas.height);
ctx.fillStyle='#0f0';
player.fill(ctx);
ctx.fillStyle='#0ff';
enemy.fill(ctx);
ctx.fillStyle='#fff';
food.fill(ctx);
ctx.fillStyle='#f00';
food1.fill(ctx);
ctx.fillStyle='#0f0';
food2.fill(ctx);
ctx.fillStyle='#00f';
food3.fill(ctx);

ctx.fillStyle='#fff';
ctx.fillText('PUNTUACION: '+score,7,15);
ctx.fillText('VIDAS: '+vidas,7,30);

if(dir==0){
ctx.textAlign='center';
ctx.font='10px verdana';
ctx.fillText('presiona ESPACIO para empezar',90,150);
ctx.fillText('presiona R para Reinicar',90,170);
ctx.textAlign='left';

;}

if(pause){
ctx.textAlign='center';
ctx.font='10px verdana';
ctx.fillText('PAUSE',90,150);
ctx.fillText('presiona ENTER para volver',90,170);

ctx.textAlign='left';
}
if(gameover){
ctx.textAlign='center';
ctx.font='10px verdana';
ctx.fillText('GAME OVER',90,130);

ctx.textAlign='left';
}

}

document.addEventListener('keydown',function(evt){
lastPress=evt.keyCode;
pressing[evt.keyCode]=true;
},false);

document.addEventListener('keyup',function(evt){
pressing[evt.keyCode]=false;
},false);

function Rectangle(x,y,width,height){
this.x=(x==null)?0:x;
this.y=(y==null)?0:y;
this.width=(width==null)?0:width;
this.height=(height==null)?this.width:height;

this.intersects=function(rect){
if(rect!=null){
return(this.x<rect.x+rect.width&&
this.x+this.width>rect.x&&
this.y<rect.y+rect.height&&
this.y+this.height>rect.y);
}
}

this.fill=function(ctx){
if(ctx!=null){
ctx.fillRect(this.x,this.y,this.width,this.height) ;
}
}
}


window.requestAnimationFrame=(function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){window.setTimeout(callback,17); };
})();

pondria el codigo de mover el enemigo en la fila 104 que corresponde a l cuadrado blanco de abajo


<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
</head>.
<body>
<canvas id="canvas" width="180" height="300" >
Canvas not supported by your browser.
</canvas>

<script type="application/javascript" src="game.js"></script>
</body>
</html>
__________________
_____________________________
___________DARK ELF__________
_____________________________

Última edición por nenu_racso90; 13/02/2015 a las 05:52