欢迎来到程序小院
玩法:
开始游戏当小鸟进入到管道中央位置立马点击鼠标左键进行压扁小鸟,不能让小鸟越过管道右侧,多个小鸟可以一起压扁哦^^
开始游戏https://www.ormcc.com/play/gameStart/145
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();
}
源码https://www.ormcc.com/
需要源码请关注添加好友哦^ ^
转载:欢迎来到本站,转载请注明文章出处
https://ormcc.com/