压扁小鸟小游戏

欢迎来到程序小院

压扁小鸟小游戏

玩法:
开始游戏当小鸟进入到管道中央位置立马点击鼠标左键进行压扁小鸟,不能让小鸟越过管道右侧,多个小鸟可以一起压扁哦^^

开始游戏icon-default.png?t=N6B9https://www.ormcc.com/play/gameStart/145

压扁小鸟小游戏_第1张图片

js

var raf = window.webkitRequestAnimationFrame
var game = {};
game.ended = false;
game.div = document.createElement('div');
game.div.style.overflow = 'hidden';
game.div.style.position = 'relative';
game.div.style.width = '100%';
game.div.style.height = '100%';
document.body.appendChild(game.div);
var resize = function () {
 ww = 750;
 hh = Math.ceil(window.innerHeight)-200;
 
 var fblikebox = document.getElementById('fblikebox');
 var googbox = document.getElementById('googbox');
 if (fblikebox) {
  if (hh < 710) {
   fblikebox.style.right = '178px';
   if (googbox) {
    googbox.style.bottom = '5px';
    googbox.style.top = 'auto';
   }
  } else {
   fblikebox.style.right = '8px';
   if (googbox) {
    googbox.style.top = '5px';
    googbox.style.bottom = 'auto';
   }
  }
 }
 
 game.div.style.width = ww+'px';
 game.div.style.height = hh+'px';

 game.div.style.transform = "translateX(-50%)";
 game.div.style.left = "50%";

 
 pipe_center = (hh - 88)/2;
 
 game.canvas.width = ww;
 game.canvas.height = hh;
 game.ctx.fillStyle = '#71c5cf';
 game.ctx.fillRect(0, 0, ww, hh);
 
 ground.canvas.width = ww;
 ground.canvas.height = 88;
 ground.ctx.fillStyle = '#ddd894';
 ground.ctx.fillRect(0, 0, ww, 88);
 var gx = 0;
 while (gx < ww) {
  ground.ctx.drawImage(ground.bit, gx, 0);
  gx += 48;
 }
 
 ground.canvas.style.left = '0px';
 ground.canvas.style.top = (hh - 88)+'px';
 
 
 logo.reposition();
 gameover.reposition();
 c2s.reposition();
 //fbshare.reposition();
 playagain.reposition();
 

 parody.div.style.left = Math.round((ww - 800)/2)+'px';
 parody.div.style.top = (hh - 28)+'px';


 var i = 0;
 for (var xx = -3; xx <= 3; xx++) {
  for (var yy = -3; yy <= 3; yy++) {
   var div = score.divs[i];
   i++;
   div.style.left = Math.round(xx + (ww - 300)/2)+'px';
   div.style.top = (yy + 20)+'px';
  }
 }
 
 
 city.canvas.width = ww;
 city.canvas.height = 256;
 city.ctx.clearRect(0, 0, ww, 256);
 var gx = 0;
 while (gx < ww) {
  city.ctx.drawImage(city.bit, gx, 0);
  gx += 300;
 }
 
 city.canvas.style.left = '0px';
 city.canvas.style.top = (hh - 256 - 88)+'px';
 
 
 
 
 
 
 
 trees.canvas.width = ww;
 trees.canvas.height = 216;
 trees.ctx.clearRect(0, 0, ww, 216);
 var gx = 0;
 while (gx < ww) {
  trees.ctx.drawImage(trees.bit, gx, 0);
  gx += 300;
 }
 
 trees.canvas.style.left = '0px';
 trees.canvas.style.top = (hh - 216 - 88)+'px';
 
 
 
 
 
 pipe_x = Math.floor(ww/2 - 148/2);
 
 pipe1.img.style.left = pipe_x+'px';
 pipe2.img.style.left = pipe_x+'px';
 
 for (var i = bloods.length-1; i>=0; i--) {
  var blood = bloods[i];
  repositionBlood(blood);
 }
 
}

var want_image_count = 0;
var loadGameImage = function (n) {
 want_image_count++;
 var o = document.createElement('img');
 o.onload = function () {
  want_image_count--;
  if ((want_image_count == 0) && (want_sound_count == 0)) {
   gameLoaded();
  }
 }
 o.src = n;
 return o;
}

//var sounds_playing = [];
var want_sound_count = 0;
var loadGameSound = function (n, chc) { // file name, channel count
 var o = {};
 
 o.channels = [];
 o.channel_pos = 0;
 o.chc = chc;
 
 o.play = function () {
  var tm = new Date().getTime();
  var sc = this.channels.length;
  var got_good_sound = false;
  var ch;
  for (var i = sc; i>=0; i--) {
   this.channel_pos++;
   if (this.channel_pos >= this.channels.length) {
    this.channel_pos = 0;
   }
   var ch = this.channels[this.channel_pos];
   //if (ch.can_play) {
    got_good_sound = true;
    break;
    //}
  }
  if (got_good_sound) {
   //ch.sound.currentTime = 1;
   ch.sound.play();
   //ch.can_play = false;
   
   //sounds_playing.push(ch);
  }
 }
 
 
 //want_sound_count++;
 /*
 var ao = document.createElement("audio");
 ao.sndo = o;
 ao.addEventListener('canplaythrough', function () {
  //want_sound_count--;
  var o = this.sndo;
  for (var i = 0; i<0*o.chc; i++) {
   var sch = {};
   sch.sound = this.cloneNode(true);
   //sch.can_play = true;
   o.channels.push(sch);
  }
  var sch = {};
  sch.sound = this;
  //sch.can_play = true;
  o.channels.push(sch);
  
  if ((want_image_count == 0) && (want_sound_count == 0)) {
   gameLoaded();
  }
 }, false);
 */
 for (var i = 0; i=0; i--) {
  game.div.appendChild(score.divs[i]);
 }
 game_loaded = true;
 resize();
 raf(oef);
 oef();
 
 //document.body.addEventListener("touchstart", poundPipes, false);
 
 document.body.onmousedown = function () {
  poundPipes();
 }
 
 document.body.onkeydown = function (e) {
  if (e.keyCode == 32) {
   poundPipes();
  }
 }
 
}



var poundPipes = function () {
 if (game.ended) { // then we have to set ended=false with the play again button
  return false;
 }
 if (!game.started) {
  fr = 0;
  nbfr = fnbfr = 100;
  points = 0;
  score.update();
  for (var i = birds.length-1; i>=0; i--) {
   var bird = birds[i];
   bird.canvas.width = 1;
   bird.canvas.height = 1;
   game.div.removeChild(bird.canvas);
   birds.splice(i, 1);
  }
  game.started = true;
  logo.showing = false;
  logo.hiding = true;
  gameover.showing = false;
  gameover.hiding = true;
  c2s.showing = false;
  c2s.hiding = true;
/*  fbshare.showing = false;
  fbshare.hiding = true;*/
  playagain.showing = false;
  playagain.hiding = true;
  parody.div.style.display = 'none';
  points = 0;
  score.update();
 }
 want_pound = true;
 if (pipe_opening == -1) {
  if (pipe_closing == -1) {
   pipe_closing = 0;
   want_pound = false;
   pipeslide.play();
   return true;
  }
 }
 return false;
}



var want_pound = false;



var ww = 768;
var hh = 920;


var bird_images = [];
var angry_bird_images = [];
for (var i = 1; i<=3; i++) {
 var o = {};
 var img = loadGameImage('./src/wav/bird'+i+'.png');
 o.img = img;
 bird_images.push(o);

 var o = {};
 var img = loadGameImage('./src/wav/angrybird'+i+'.png');
 o.img = img;
 angry_bird_images.push(o);
}
bird_images.push(bird_images[1]); // this one final push makes the wing animation loop correctly
angry_bird_images.push(angry_bird_images[1]); // this one final push makes the wing animation loop correctly






var flap = loadGameSound('./src/wav/flap.wav', 5);
var pipeslide = loadGameSound('./src/wav/slide.wav', 3);
var clang = loadGameSound('./src/wav/clang.wav', 3);

var coin1 = loadGameSound('./src/wav/coin.wav', 3);
var coin2 = loadGameSound('./src/wav/coin2.wav', 3);
var coin3 = loadGameSound('./src/wav/coin3.wav', 3);
var coin4 = loadGameSound('./src/wav/coin4.wav', 3);

var kick = loadGameSound('./src/wav/kick.wav', 5);
var kick2 = loadGameSound('./src/wav/kick2.wav', 5);
var kick3 = loadGameSound('./src/wav/kick3.wav', 5);
var kick4 = loadGameSound('./src/wav/kick4.wav', 5);
var kick5 = loadGameSound('./src/wav/kick5.wav', 5);

var kicks = [kick, kick2, kick3, kick4, kick5];

var squish1 = loadGameSound('./src/wav/squish1.wav', 3);
var squish2 = loadGameSound('./src/wav/squish2.wav', 3);

var squishes = [squish1, squish2];


var clanging = -1;





game.canvas = document.createElement('canvas');
game.canvas.width = ww;
game.canvas.height = hh;
game.ctx = game.canvas.getContext('2d');
game.started = false;


game.ctx.fillStyle = '#71c5cf';
game.ctx.fillRect(0, 0, ww, hh);



var logo = {};
logo.a = -.2;
logo.fr = 0;
logo.showing = true;
logo.hiding = false;
logo.img = loadGameImage('./src/wav/logo.png'); // 626 x 144
logo.img.style.position = 'absolute';
logo.img.style.opacity = 0;
logo.img.style.zIndex = '42069';
logo.reposition = function () {
 logo.img.style.left = Math.floor((ww-626)/2)+'px';
 logo.img.style.top = Math.floor(Math.cos(logo.fr/9)*20 + (hh - 144 - 88)/2)+'px';
}



var gameover = {};
gameover.a = -.2;
gameover.fr = 0;
gameover.showing = false;
gameover.hiding = true;
gameover.img = loadGameImage('./src/wav/gameover.png'); // 626 x 144
gameover.img.style.position = 'absolute';
gameover.img.style.opacity = 0;
gameover.img.style.zIndex = '42069';
gameover.reposition = function () {
 gameover.img.style.left = Math.floor((ww-626)/2)+'px';
 gameover.img.style.top = Math.floor(Math.cos(gameover.fr/32)*4 + (hh - 200 - 144 - 88)/2)+'px';
}


/*
var fbshare = {}; // 592 x 80
fbshare.a = -.2;
fbshare.fr = 0;
fbshare.showing = false;
fbshare.hiding = true;
fbshare.img = loadGameImage('./src/wav/fbshare.png');
fbshare.img.style.border = '0px';
fbshare.img.style.cursor = 'pointer';
fbshare.img.border = 0;
fbshare.img.style.position = 'absolute';
fbshare.img.style.display = 'none';
fbshare.img.style.opacity = 0;
fbshare.img.style.zIndex = '142069';
fbshare.reposition = function () {
 fbshare.img.style.left = Math.floor((ww-592)/2)+'px';
 fbshare.img.style.top = Math.floor(Math.cos(fbshare.fr/12)*5 + (hh + 150 + 80 - 88)/2)+'px';
}*/
/* www.datouwang.com */
/*fbshare.img.onclick = function () {
 FB.ui({
   method: 'feed',
   link: 'http://squishybird.com/',
   name: 'Squishy Bird',
   picture: 'http://squishybird.com/fbthumb.jpg',
   caption: 'I hate that freakin\' bird so much...',
   description: 'I scored '+points+' in Squishy Bird! Can you beat that?'
 }, function(response){});
}*/


var playagain = {}; //  252x71     592 x 80
playagain.a = -.2;
playagain.fr = 0;
playagain.showing = false;
playagain.hiding = true;
playagain.img = loadGameImage('./src/wav/playagain.png');
playagain.img.style.border = '0px';
playagain.img.style.cursor = 'pointer';
playagain.img.border = 0;
playagain.img.style.position = 'absolute';
playagain.img.style.display = 'none';
playagain.img.style.opacity = 0;
playagain.img.style.left = "50%";
playagain.img.style.transform = "translateX(-50%)";
playagain.img.style.zIndex = '142068';
playagain.reposition = function () {
 playagain.img.style.top = Math.floor(Math.cos(playagain.fr/14)*5 + (hh + 320 + 71 - 88)/2)+'px';
}
playagain.img.onclick = function () {
 game.ended = false;
 poundPipes();
}



var c2s = {};
c2s.a = -1;
c2s.showing = true;
c2s.hiding = false;
c2s.img = loadGameImage('./src/wav/clicktostart.png'); // 337 x 75
c2s.img.style.position = 'absolute';
c2s.img.style.opacity = 0;
c2s.img.style.zIndex = '42070';
c2s.reposition = function () {
 c2s.img.style.left = Math.floor((ww-337)/2)+'px';
 c2s.img.style.top = Math.floor((hh + 250)/2)+'px';
}




var parody = {};
parody.div = document.createElement('div');
parody.div.style.width = '800px';
parody.div.style.height = '24px';
parody.div.style.position = 'absolute';
parody.div.style.textAlign = 'center';
parody.div.style.fontFamily = 'Verdana';
parody.div.style.fontSize = '12px';
parody.div.style.zIndex = 87654;

var points = 0;
var highscore = 0;


var score = {};
score.divs = [];
for (var xx = -3; xx <= 3; xx++) {
 for (var yy = -3; yy <= 3; yy++) {
  var div = document.createElement('div');
  score.divs.push(div);
  div.style.width = '300px';
  div.style.height = '50px';
  div.style.position = 'absolute';
  div.style.textAlign = 'center';
  div.style.fontFamily = 'Verdana';
  div.style.fontWeight = 'bold';
  div.style.fontSize = '30px';
  div.style.color = '#000000';
  div.style.zIndex = 88887;
  div.style['user-select'] = 'none';
  div.style['-webkit-user-select'] = 'none';
  div.style['-moz-user-select'] = 'none';
  div.style['-ms-user-select'] = 'none';
  div.style['-o-user-select'] = 'none';
  
  
  /*
  -webkit-user-select: none; // Chrome/Safari
  -moz-user-select: none; // Firefox
  -ms-user-select: none; // IE10+

  // Rules below not implemented in browsers yet
  -o-user-select: none;
  user-select: none;
  */
  
  if (xx == 0 && yy == 0) {
   div.style.color = '#FFFFFF';
   div.style.zIndex = 88888;
  }
  div.innerHTML = '';
 }
}
score.update = function () {
 for (var i = score.divs.length-1; i>=0; i--) {
  score.divs[i].innerHTML = points;
 }
}




var ground = {};

ground.canvas = document.createElement('canvas');
ground.canvas.style.position = 'absolute';
ground.canvas.style.zIndex = '31337';
ground.ctx = ground.canvas.getContext('2d');
ground.bit = loadGameImage('./src/wav/ground.png');



var city = {};

city.canvas = document.createElement('canvas');
city.canvas.style.position = 'absolute';
city.canvas.style.zIndex = '60';
city.ctx = city.canvas.getContext('2d');
city.bit = loadGameImage('./src/wav/city.png');




var trees = {};

trees.canvas = document.createElement('canvas');
trees.canvas.style.position = 'absolute';
trees.canvas.style.zIndex = '61';
trees.ctx = trees.canvas.getContext('2d');
trees.bit = loadGameImage('./src/wav/trees.png');





var birds = [];
var dead_birds = [];

var newBird = function () {
 var bird = {};
 bird.cw = 150;
 bird.ch = 150;
 bird.ww = 85;
 bird.hh = 60;
 bird.xx = -200 - Math.random()*360;
 bird.yy = 0 - Math.random() * 280;
 bird.svx = 3 + Math.random()*2 + Math.pow((100 - nbfr)/20, 2);
 bird.vx = bird.svx;
 bird.vy = -13 - Math.random()*13;
 bird.vr = 0;
 bird.ar = 0;
 bird.ang = 0;
 bird.fr = 0;
 bird.anger = 0;
 bird.anger_fr = 0;
 bird.dying = false;
 bird.dead = false;
 bird.invincible = 0; // if greater than 0, counts down per frame until 0 again
 bird.canvas = document.createElement('canvas');
 game.div.appendChild(bird.canvas);
 bird.canvas.width = bird.cw;
 bird.canvas.height = bird.ch;
 bird.canvas.style.zIndex = '69';
 bird.canvas.style.position = 'absolute';
 bird.ctx = bird.canvas.getContext('2d');
 birds.push(bird);
}






var blood_image = loadGameImage('./src/wav/blood.png');
var bloods = [];
var newBlood = function () {
 var blood = {};
 blood.ww = 325*4;
 blood.hh = 138*4;
 blood.fr = 0;
 blood.canvas = document.createElement('canvas');
 game.div.appendChild(blood.canvas);
 blood.canvas.width = blood.ww;
 blood.canvas.height = blood.hh;
 blood.canvas.style.zIndex = '70';
 blood.canvas.style.position = 'absolute';
 repositionBlood(blood);
 blood.ctx = blood.canvas.getContext('2d');
 bloods.push(blood);
}

var repositionBlood = function (blood) {
 blood.canvas.style.left = (pipe_x + 148/2 - (325*4/2))+'px';
 blood.canvas.style.top = (pipe_center - 32)+'px';
}


var pipe1 = {};
pipe1.img = loadGameImage('./src/wav/pipe1.png');
pipe1.img.width = 148;
pipe1.img.height = 1664;
pipe1.img.style.position = 'absolute';
pipe1.img.style.left = '340px';
pipe1.img.style.top = '0px';
pipe1.img.style.zIndex = '420';


var pipe2 = {};
pipe2.img = loadGameImage('./src/wav/pipe2.png');
pipe2.img.width = 148;
pipe2.img.height = 1664;
pipe2.img.style.position = 'absolute';
pipe2.img.style.left = '340px';
pipe2.img.style.top = '0px';
pipe2.img.style.zIndex = '420';



var nbfr = 100;
var fnbfr = 100;



var fr = 0;
var ltm = 0;
var oef = function () {
 if (game_loaded) {
  var ftm = new Date().getTime();
  var tm;
  var tj = 0;
  while (ltm < ftm) {
   ltm += 20;
   tj++;
   if (tj > 10) { // we're way too many frames behind. just give up.
    ltm = ftm;
    break;
   }
   if (game.started) {
    fr++;
    if ((fr % fnbfr) == 1) {
     newBird();
     if (nbfr > 13) {
      nbfr = (nbfr - 13)*.996 + 13;
      //nbfr -= (101 - nbfr) * .1;
      //console.log(nbfr);
      fnbfr = Math.ceil(nbfr);
     }
    }
   }
   if (want_pound) {
    want_pound = !poundPipes();
   }
   
   /*
   for (var i = sounds_playing.length-1; i>=0; i--) {
    var ch = sounds_playing[i];
    if (ch.sound.currentTime > (ch.sound.duration - 1)) {
     ch.sound.currentTime = 1;
     ch.sound.pause();
     ch.can_play = true;
    }
   }
   */
   
   if (logo.showing) {
    logo.a += .03;
    if (logo.a >= 1) {
     logo.a = 1;
     logo.showing = false;
    }
    logo.img.style.opacity = logo.a;
   }
   if (logo.hiding) {
    logo.a -= .1;
    if (logo.a <= 0) {
     logo.a = 0;
     logo.hiding = false;
    }
    logo.img.style.opacity = logo.a;
   }
   if (logo.a > 0) {
    logo.fr++;
    logo.reposition();
   }
   if (logo.a > .01) {
    if (!logo.visible) {
     logo.visible = true;
     logo.img.style.display = 'inline';
    }
   } else {
    if (logo.visible) {
     logo.visible = false;
     logo.img.style.display = 'none';
    }
   }
   
   if (gameover.showing) {
    gameover.a += .03;
    if (gameover.a >= 1) {
     gameover.a = 1;
     gameover.showing = false;
    }
    gameover.img.style.opacity = gameover.a;
   }
   if (gameover.hiding) {
    gameover.a -= .1;
    if (gameover.a <= 0) {
     gameover.a = 0;
     gameover.hiding = false;
    }
    gameover.img.style.opacity = gameover.a;
   }
   if (gameover.a > 0) {
    gameover.fr++;
    gameover.reposition();
   }
   if (gameover.a > .01) {
    if (!gameover.visible) {
     gameover.visible = true;
     gameover.img.style.display = 'inline';
    }
   } else {
    if (gameover.visible) {
     gameover.visible = false;
     gameover.img.style.display = 'none';
    }
   }
   
  /* if (fbshare.showing) {
    fbshare.a += .03;
    if (fbshare.a >= 1) {
     fbshare.a = 1;
     fbshare.showing = false;
    }
    fbshare.img.style.opacity = fbshare.a;
   }
   if (fbshare.hiding) {
    fbshare.a -= .1;
    if (fbshare.a <= 0) {
     fbshare.a = 0;
     fbshare.hiding = false;
    }
    fbshare.img.style.opacity = fbshare.a;
   }
   if (fbshare.a > 0) {
    fbshare.fr++;
    fbshare.reposition();
   }
   if (fbshare.a > .01) {
    if (!fbshare.visible) {
     fbshare.visible = true;
     fbshare.img.style.display = 'inline';
    }
   } else {
    if (fbshare.visible) {
     fbshare.visible = false;
     fbshare.img.style.display = 'none';
    }
   }*/
   
   if (playagain.showing) {
    playagain.a += .03;
    if (playagain.a >= 1) {
     playagain.a = 1;
     playagain.showing = false;
    }
    playagain.img.style.opacity = playagain.a;
   }
   if (playagain.hiding) {
    playagain.a -= .1;
    if (playagain.a <= 0) {
     playagain.a = 0;
     playagain.hiding = false;
    }
    playagain.img.style.opacity = playagain.a;
   }
   if (playagain.a > 0) {
    playagain.fr++;
    playagain.reposition();
   }
   if (playagain.a > .01) {
    if (!playagain.visible) {
     playagain.visible = true;
     playagain.img.style.display = 'inline';
    }
   } else {
    if (playagain.visible) {
     playagain.visible = false;
     playagain.img.style.display = 'none';
    }
   }

   if (c2s.showing) {
    c2s.a += .03;
    if (c2s.a >= 1) {
     c2s.a = 1;
     c2s.showing = false;
    }
    c2s.img.style.opacity = c2s.a;
   }
   if (c2s.hiding) {
    c2s.a -= .1;
    if (c2s.a <= 0) {
     c2s.a = 0;
     c2s.hiding = false;
    }
    c2s.img.style.opacity = c2s.a;
   }
   if (c2s.a > .01) {
    if (!c2s.visible) {
     c2s.visible = true;
     c2s.img.style.display = 'inline';
    }
   } else {
    if (c2s.visible) {
     c2s.visible = false;
     c2s.img.style.display = 'none';
    }
   }
   
   if (clanging >= 0) {
    clanging--;
    pipe1.img.style.left = (pipe_x + Math.cos(fr*Math.PI)*3)+'px';
    pipe2.img.style.left = (pipe_x + Math.cos(fr*Math.PI)*3)+'px';
   }
   
   pipe1.img.style.top = (pipe_center - 1664 - pipe_gap/2)+'px';
   pipe2.img.style.top = (pipe_center + pipe_gap/2)+'px';
   if (pipe_opening >= 0) {
    pipe_opening++;
    if (pipe_opening >= 15) {
     pipe_opening = -1;
    }
   }
   var kill_combo = 0;
   var new_points = 0;
   var kicked = 0;
   if (pipe_closing >= 0) {
    pipe_gap -= 50;
    if (pipe_gap <= -3) {
     pipe_gap = -3;
     pipe_closing++;
     if (pipe_closing >= 5) {
      pipe_closing = -1;
      pipe_opening = 0;
     }
     var wnb = false;
     for (var i = birds.length-1; i>=0; i--) {
      var bird = birds[i];
      if (bird.invincible == 0) {
       if (bird.dying) {
        if (bird.xx <= (pipe_x+10)) {
         bird.invincible = 5; // ensures there isn't a double-kick anomaly
         bird.vx = -10 - Math.random()*20 - bird.anger*8;
         bird.vy = 0;
         bird.ar = Math.random()*6 - 3;
         bird.dying = false;
         kicks[Math.min(bird.anger, 4)].play();
         bird.anger++;
         kicked++;
        } else if (bird.xx >= (pipe_x + 148 -10)) {
         bird.vx = 10 + Math.random()*20;
         bird.vy = 0;
         bird.ar = Math.random()*6 - 3;
         bird.dying = false;
         bird.anger++;
        } else {
         bird.dead = true;
         wnb = true;
         new_points += 1 + bird.anger;
         kill_combo++;
         score.update();
        }
       }
      }
     }
     if (pipe_closing == 1) {
      if (kill_combo == 0) {
       if (kicked == 0) {
        clang.play();
        clanging = 12;
       }
      }
     }
     if (wnb) {
      newBlood();
     }
    }
   } else {
    pipe_gap += (bottom_pipe_gap - pipe_gap) * .15;
   }
   if (new_points > 0) {
    new_points *= kill_combo;
    new_points = Math.pow(new_points, 2);
    if (new_points == 0) {
     
    } else if (new_points == 1) {
     coin1.play();
    } else if (new_points < 8) {
     coin2.play();
    } else if (new_points < 50) {
     coin3.play();
    } else {
     coin4.play();
    }
    points += new_points;
    score.update();
   }
   if (new_points > 0) {
    squishes[Math.floor(Math.random()*squishes.length)].play();
   }
   for (var i = bloods.length-1; i>=0; i--) {
    var blood = bloods[i];
    var bctx = blood.ctx;
    bctx.clearRect(0, 0, blood.ww, blood.hh);
    var tx = Math.floor(blood.fr)%5;
    var ty = (Math.floor(blood.fr) - tx)/5;
    bctx.drawImage(blood_image, tx*325, ty*138, 325, 138, 0, 0, 325*4, 138*4);
    blood.fr += 1;
    if (blood.fr >= 30) {
     game.div.removeChild(blood.canvas);
     bloods.splice(i, 1);
    }
   }
   if (game.started) {
    for (var i = birds.length-1; i>=0; i--) {
     var bird = birds[i];
     var bctx = bird.ctx;
     if (bird.invincible > 0) {
      bird.invincible--;
     }
     bctx.save();
     bctx.clearRect(0, 0, bird.cw, bird.ch);
     bctx.translate(bird.cw/2, bird.ch/2);
     if (!bird.dying) {
      bird.vr += bird.ar;
      bird.vr *= .8;
      bird.ar *= .95;
      var ang = 0;
      if (bird.vy > 11) ang = Math.atan2(bird.vy, bird.vx) * Math.max(0, Math.min(1, .1 * (bird.vy - 11)));
      bctx.rotate(-.4 + ang + bird.vr);
     }
     bird.fr += .4;
     bird.fr %= bird_images.length;
     var bfr = Math.floor(bird.fr);
     bctx.drawImage(bird_images[bfr].img, 0, 0, bird.ww, bird.hh, -bird.ww/2 + 10, -bird.hh/2, bird.ww, bird.hh);
     if (bird.anger > 0) {
      bird.anger_fr += bird.anger/8;
      bctx.globalAlpha = .5 * (1 - Math.cos(bird.anger_fr)) * Math.min(1, bird.anger/3);
      bctx.drawImage(angry_bird_images[bfr].img, 0, 0, bird.ww, bird.hh, -bird.ww/2 + 10, -bird.hh/2, bird.ww, bird.hh);
     }
     bctx.restore();
     bird.canvas.style.left = (bird.xx - bird.cw/2)+'px';
     bird.canvas.style.top = (pipe_center + bird.yy - bird.ch/2)+'px';
     if (bird.dying) {
      if (bird.stuck_side == 1) {
       bird.yy = pipe_gap/2 - 30;
      } else {
       bird.yy = 30 - pipe_gap/2;
      }
     } else {
      if (bird.vx < bird.svx) {
       bird.vx++;
       if (bird.vx >= bird.svx) {
        bird.vx = bird.svx;
       }
      } else if (bird.vx > bird.svx) {
       bird.vx--;
       if (bird.vx <= bird.svx) {
        bird.vx = bird.svx;
       }
      }
      bird.xx += bird.vx + bird.anger*1.5;
      bird.yy += bird.vy;
      bird.vy += .6;
      if (bird.yy > (bottom_pipe_gap/2 - 40)) {
       bird.yy = bottom_pipe_gap/2 - 41;
       bird.vy = -8 - Math.random()*6;
       flap.play();
      }
      if (pipe_closing != -1) {
       if (bird.xx >= (pipe_x-40)) {
        if (bird.xx <= (pipe_x + 148 +30)) {
         //if (Math.abs(bird.yy) < (pipe_gap/2 + 20)) {
          if (bird.invincible == 0) {
           bird.dying = true;
           if (bird.yy > 0) {
            bird.stuck_side = 1;
           } else {
            bird.stuck_side = 2;
           }
          }
          //}
        }
       }
      } else { // pipe might be opening from last close
       if (!bird.dying) { // bird might be overlapping a pipe but won't be killed so must fly away instead
        if (bird.xx >= (pipe_x-40)) {
         if (bird.xx <= (pipe_x + 148 +30)) {
          if (Math.abs(bird.yy) > (pipe_gap/2 + 20)) {

           bird.vx = -10 - Math.random()*20 - bird.anger*8;
           bird.vy = 0;
           bird.ar = Math.random()*6 - 3;
           kicks[Math.min(bird.anger, 4)].play();
           bird.anger++;
          
          }
         }
        }
       }
      
      }
     }
     if (bird.xx > (pipe_x + 148 + 200)) {
      game.started = false;
      game.ended = true;
      gameover.hiding = false;
      gameover.showing = true;
     /* fbshare.hiding = false;
      fbshare.showing = true;*/
      playagain.hiding = false;
      playagain.showing = true;
      if (points > highscore) {
       highscore = points;
      }
     }
     if (bird.dead || (bird.xx > (ww + 311))) {
      bird.canvas.width = 1;
      bird.canvas.height = 1;
      game.div.removeChild(bird.canvas);
      birds.splice(i, 1);
     }
    }
   }
  }
 }
 raf(oef);
}


window.onresize = function () {
 resize();
}

源码icon-default.png?t=N6B9https://www.ormcc.com/

需要源码请关注添加好友哦^ ^

转载:欢迎来到本站,转载请注明文章出处https://ormcc.com/

压扁小鸟小游戏_第2张图片

你可能感兴趣的:(H5小游戏,javascript,前端,html,游戏)