Fue un error que tuve en otra parte de del código.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúwindow.addEventListener('load',init,false);
//VARIABLES
var canvas=null,ctx=null;
var lastPress=null;
var pause=true;
var gameover=false;
var dir=0;
var score=0;
var player=new Rectangle(40,40,10,10);
player.tam=10;
player.x=40;
player.y=40;
player.vel_x=1;
player.vel_y=1;
var vel_maxima=8;
var KEY_ENTER=13;
var KEY_LEFT=37;
var KEY_UP=38;
var KEY_RIGHT=39;
var KEY_DOWN=40;
var food=new Array();
food.push(new Rectangle(100,50,10,10));
food.push(new Rectangle(100,100,10,10));
food.push(new Rectangle(200,50,10,10));
food.push(new Rectangle(200,100,10,10));
for(var i=0,l=food.length;i<l;i++){
food[i].tam=10;
food[i].dir=0;
food[i].vel_x=6;
food[i].vel_y=6; }
//VARIABLES
function random(max){
return Math.floor(Math.random()*max);
}
function init(){
canvas=document.getElementById('canvas');
ctx=canvas.getContext('2d');
run();
repaint();
}
function run(){
setTimeout(run,50);
act();
}
function repaint(){
requestAnimationFrame(repaint);
paint(ctx);
}
function reset(){
lastPress=null
dir=0
score=0
player=new Rectangle(40,40,10,10)
player.tam=10
player.vel_x=1
playervel_y=1
vel_maxima=8
for(var i=0,l=food.length;i<l;i++){
food[i].tam=10
food[i].dir=0
food[i].vel_x=6
food[i].vel_y=6}
pause=true
gameover=false
}
function act(){
if(!pause){
if(gameover){
reset();}
// Change Direction
if(lastPress==KEY_UP)
dir=0;
if(lastPress==KEY_RIGHT)
dir=1;
if(lastPress==KEY_DOWN)
dir=2;
if(lastPress==KEY_LEFT)
dir=3;
// Move Rect
if(dir==0)
if(player.vel_y!=-vel_maxima && dir==0)
player.vel_y-=1;
if(dir==1)
if(player.vel_x!=vel_maxima && dir==1)
player.vel_x+=1;
if(dir==2)
if(player.vel_y!=vel_maxima && dir==2)
player.vel_y+=1;
if(dir==3)
if(player.vel_x!=-vel_maxima && dir==3)
player.vel_x-=1;
player.y+=player.vel_y
player.x+=player.vel_x
// Out Screen
if(player.x>canvas.width-player.tam){
player.vel_x=0
player.x=canvas.width-player.tam }
if(player.y>canvas.height-player.tam){
player.vel_y=0
player.y=canvas.height-player.tam}
if(player.x<0){
player.vel_x=0
player.x=0 }
if(player.y<0){
player.vel_y=0
player.y=0 }
for(var i=0,l=food.length;i<l;i++){
// Move food
if(food[i].dir==0){
food[i].x-=food[i].vel_x
food[i].y+=food[i].vel_y }
if(food[i].dir==1){
food[i].x-=food[i].vel_x
food[i].y-=food[i].vel_y }
if(food[i].dir==2){
food[i].x+=food[i].vel_x
food[i].y+=food[i].vel_y }
if(food[i].dir==3){
food[i].x+=food[i].vel_x
food[i].y-=food[i].vel_y }
//Food Out Screen
if(food[i].y>canvas.height-food[i].tam || food[i].y<0){
food[i].vel_y=-food[i].vel_y}
if(food[i].x>canvas.width-food[i].tam || food[i].x<0){
food[i].vel_x=-food[i].vel_x}
}
// Food Intersects
for(var i=0,l=food.length;i<l;i++){
if(player.intersects(food[i])){
if(food[i].tam>player.tam){
gameover=true;
pause=true;
}else {
score++;
player.tam+=2;
food[i].x=random(canvas.width/10-1)*10;
food[i].y=random(canvas.height/10-1)*10;
food[i].tam=Math.floor(Math.random() * (20-10+1)) + 10;
food[i].dir=Math.floor(Math.random() * (3-0+1)) + 0;
food[i].vel_x=Math.floor(Math.random() * (7-3+1)) + 3;
food[i].vel_y=Math.floor(Math.random() * (7-3+1)) + 3; }
}
}
}
// Pause/Unpause
if(lastPress==KEY_ENTER){
pause=!pause;
lastPress=null;
}
}
for(var i=0,l=food.length;i<l;i++){
function paint(ctx){
ctx.fillStyle='#000';
ctx.fillRect(0,0,canvas.width,canvas.height);
ctx.fillStyle='#0f0';
ctx.fillRect(player.x,player.y,player.tam,player.tam);
ctx.fillStyle='#f00';
for(var i=0,l=food.length;i<l;i++){
ctx.fillRect(food[i].x,food[i].y,food[i].tam,food[i].tam); }
ctx.fillStyle='#fff';
//ctx.fillText('Last Press: '+lastPress,0,20);
ctx.fillText('Score: '+score,0,10);
if(pause){
ctx.textAlign='center';
if(gameover){
ctx.fillText('GAME OVER',150,75);}
else{
ctx.fillText('PAUSE',150,75);
ctx.textAlign='left';}
}
}}
document.addEventListener('keydown',function(evt){
lastPress=evt.keyCode;
},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;
for(var i=0,l=food.length;i<l;i++){
this.intersects=function(rect){
if(rect!=null){
return(this.x<rect.x+food[i].tam&&
this.x+player.tam>rect.x&&
this.y<rect.y+food[i].tam&&
this.y+player.tam>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);};
})();