├── img ├── 0.jpg ├── 0.png ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg ├── 6.jpg ├── 7.jpg ├── 8.jpg ├── 9.jpg ├── bg.jpg ├── ok.jpg ├── bird0.png ├── bird1.png ├── head.jpg ├── score.jpg ├── start.jpg ├── banner.jpg ├── down_mod.png ├── message.jpg ├── submit.jpg ├── up_bird0.png ├── up_bird1.png ├── up_mod.png ├── up_pipe.png ├── down_bird0.png ├── down_bird1.png ├── down_pipe.png └── game_over.jpg ├── js ├── baseObj.js ├── block.js └── bird.js ├── css └── index.css └── index.html /img/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/0.jpg -------------------------------------------------------------------------------- /img/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/0.png -------------------------------------------------------------------------------- /img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/1.jpg -------------------------------------------------------------------------------- /img/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/2.jpg -------------------------------------------------------------------------------- /img/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/3.jpg -------------------------------------------------------------------------------- /img/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/4.jpg -------------------------------------------------------------------------------- /img/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/5.jpg -------------------------------------------------------------------------------- /img/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/6.jpg -------------------------------------------------------------------------------- /img/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/7.jpg -------------------------------------------------------------------------------- /img/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/8.jpg -------------------------------------------------------------------------------- /img/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/9.jpg -------------------------------------------------------------------------------- /img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/bg.jpg -------------------------------------------------------------------------------- /img/ok.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/ok.jpg -------------------------------------------------------------------------------- /img/bird0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/bird0.png -------------------------------------------------------------------------------- /img/bird1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/bird1.png -------------------------------------------------------------------------------- /img/head.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/head.jpg -------------------------------------------------------------------------------- /img/score.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/score.jpg -------------------------------------------------------------------------------- /img/start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/start.jpg -------------------------------------------------------------------------------- /img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/banner.jpg -------------------------------------------------------------------------------- /img/down_mod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/down_mod.png -------------------------------------------------------------------------------- /img/message.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/message.jpg -------------------------------------------------------------------------------- /img/submit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/submit.jpg -------------------------------------------------------------------------------- /img/up_bird0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/up_bird0.png -------------------------------------------------------------------------------- /img/up_bird1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/up_bird1.png -------------------------------------------------------------------------------- /img/up_mod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/up_mod.png -------------------------------------------------------------------------------- /img/up_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/up_pipe.png -------------------------------------------------------------------------------- /img/down_bird0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/down_bird0.png -------------------------------------------------------------------------------- /img/down_bird1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/down_bird1.png -------------------------------------------------------------------------------- /img/down_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/down_pipe.png -------------------------------------------------------------------------------- /img/game_over.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YangQiGitHub/FlyBird/HEAD/img/game_over.jpg -------------------------------------------------------------------------------- /js/baseObj.js: -------------------------------------------------------------------------------- 1 | var baseObj = { 2 | //随机数 3 | randomNum: function(min, max) { 4 | return parseInt(Math.random() * (max - min + 1) + min); 5 | }, 6 | 7 | //两个矩形元素之间的碰撞检测 8 | rectangleCrashExamine: function (obj1, obj2) { 9 | var obj1Left = obj1.offsetLeft; 10 | var obj1Width = obj1.offsetLeft + obj1.offsetWidth; 11 | var obj1Top = obj1.offsetTop; 12 | var obj1Height = obj1.offsetTop + obj1.offsetHeight; 13 | 14 | var obj2Left = obj2.offsetLeft; 15 | var obj2Width = obj2.offsetLeft + obj2.offsetWidth; 16 | var obj2Top = obj2.offsetTop; 17 | var obj2Height = obj2.offsetTop + obj2.offsetHeight; 18 | 19 | if (!(obj1Left > obj2Width || obj1Width < obj2Left || obj1Top > obj2Height || obj1Height < obj2Top)) { 20 | return true; 21 | } 22 | return false; 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /css/index.css: -------------------------------------------------------------------------------- 1 | #wrapBg{/*游戏背景*/ 2 | width: 343px;height: 480px; 3 | margin: 0 auto; 4 | background-image:url(../img/bg.jpg); 5 | position: relative; 6 | top: 100px; 7 | overflow: hidden; 8 | } 9 | 10 | #headTitle{/*开始标题*/ 11 | width: 236px;height: 77px; 12 | background-image: url(../img/head.jpg); 13 | position: absolute; left: 53px; top: 100px; 14 | } 15 | 16 | #headBird{/*开始标题中的小鸟*/ 17 | float:right; 18 | margin-top: 25px; 19 | } 20 | 21 | #startBtn{/*开始按钮*/ 22 | width: 85px;height: 29px; 23 | padding: 0;margin: 0; 24 | background-image: url(../img/start.jpg); 25 | position: absolute;left: 129px;top: 250px; 26 | } 27 | 28 | #grassLand1{/*草地1*/ 29 | height: 14px;width: 343px; 30 | background-image: url(../img/banner.jpg); 31 | position: absolute;top: 423px; 32 | } 33 | 34 | #grassLand2{/*草地2*/ 35 | height: 14px;width: 343px; 36 | background-image: url(../img/banner.jpg); 37 | position: absolute;top: 423px;left: 343px; 38 | } 39 | 40 | #score{ 41 | position:absolute; 42 | left: 130px; 43 | top:50px; 44 | z-index: 1; 45 | } 46 | 47 | #score div{ 48 | height: 39px; 49 | width: 28px; 50 | float: left; 51 | background-image: url(../img/0.jpg); 52 | display: none; 53 | } 54 | 55 | #gameOver{ 56 | position: absolute; 57 | top: 100px; 58 | text-align: center; 59 | display: none; 60 | z-index: 1; 61 | } 62 | -------------------------------------------------------------------------------- /js/block.js: -------------------------------------------------------------------------------- 1 | function Block() { 2 | this.upDivWrap = null; 3 | this.downDivWrap = null; 4 | this.downHeight = baseObj.randomNum(0,150); 5 | this.gapHeight = baseObj.randomNum(150,160); 6 | this.upHeight = 312 - this.downHeight - this.gapHeight; 7 | 8 | // 用来生成Div的方法 9 | this.createDiv = function(url, height, positionType, left, top) { 10 | var newDiv = document.createElement("div"); 11 | newDiv.style.width = "62px"; 12 | newDiv.style.height = height; 13 | newDiv.style.position = positionType; 14 | newDiv.style.left = left; 15 | newDiv.style.top = top; 16 | newDiv.style.backgroundImage = url; //"url(/img/0.jpg)" 17 | return newDiv; 18 | }; 19 | 20 | this.createBlock = function() { 21 | var upDiv1 = this.createDiv("url(img/up_mod.png)", this.upHeight + "px"); 22 | var upDiv2 = this.createDiv("url(img/up_pipe.png)", "60px"); 23 | this.upDivWrap = this.createDiv(null, null, "absolute", "450px"); 24 | this.upDivWrap.appendChild(upDiv1); 25 | this.upDivWrap.appendChild(upDiv2);//生成上方管道 26 | 27 | var downDiv1 = this.createDiv("url(img/down_pipe.png)", "60px"); 28 | var downDiv2 = this.createDiv("url(img/down_mod.png)", this.downHeight +"px"); 29 | this.downDivWrap = this.createDiv(null, null, "absolute", "450px", 363 - this.downHeight + "px"); 30 | this.downDivWrap.appendChild(downDiv1); 31 | this.downDivWrap.appendChild(downDiv2); //生成下方的管道 32 | 33 | jsWrapBg.appendChild(this.upDivWrap); 34 | jsWrapBg.appendChild(this.downDivWrap); 35 | }; 36 | 37 | this.moveBlock = function() { //控制管道移动的方法 38 | this.upDivWrap.style.left = this.upDivWrap.offsetLeft - 3 + "px"; 39 | this.downDivWrap.style.left = this.downDivWrap.offsetLeft - 3 + "px"; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /js/bird.js: -------------------------------------------------------------------------------- 1 | var bird = { 2 | flyTimer:null,//小鸟飞翔定时器 3 | wingTimer:null,//小鸟翅膀摆动定时器 4 | 5 | div:document.createElement("div"), 6 | showBird:function(parentObj) { 7 | this.div.style.width = "40px"; 8 | this.div.style.height = "28px"; 9 | this.div.style.backgroundImage = "url(img/bird0.png)"; 10 | this.div.style.backgroundRepeat = "no-repeat"; 11 | this.div.style.position = "absolute"; 12 | this.div.style.left = "50px"; 13 | this.div.style.top = "200px"; 14 | this.div.style.zIndex = "1"; 15 | 16 | parentObj.appendChild(this.div); //将小鸟DIV插入游戏界面中 17 | }, 18 | 19 | fallSpeed: 0, //小鸟下落速度 20 | flyBird: function(){ //控制小鸟飞翔下落的函数 21 | bird.flyTimer = setInterval(fly,40); 22 | function fly() { 23 | bird.div.style.top = bird.div.offsetTop + bird.fallSpeed++ + "px"; 24 | if (bird.div.offsetTop < 0) { 25 | bird.fallSpeed = 2; //这里用于控制小鸟不要飞出界面 26 | } 27 | if (bird.div.offsetTop >= 395) { 28 | bird.fallSpeed = 0; 29 | clearInterval(bird.flyTimer); //一旦飞到地面,清除定时器 30 | clearInterval(bird.wingTimer); //清除翅膀摆动定时器 31 | } 32 | if (bird.fallSpeed > 12) { 33 | bird.fallSpeed = 12; //鸟的最大下落速度控制在12 34 | } 35 | } 36 | }, 37 | 38 | wingWave: function() { //控制小鸟煽动翅膀的函数 39 | var up = ["url(img/up_bird0.png)", "url(img/up_bird1.png)"]; 40 | var down = ["url(img/down_bird0.png)", "url(img/down_bird1.png)"]; 41 | var i = 0, j = 0; 42 | bird.wingTimer = setInterval(wing,120);//逐帧动画,小鸟煽动翅膀 43 | function wing() { 44 | if (bird.fallSpeed > 0) { 45 | bird.div.style.backgroundImage = down[i++]; 46 | if (i==2) {i = 0} 47 | }if (bird.fallSpeed < 0) { 48 | bird.div.style.backgroundImage = up[j++]; 49 | if (j==2) {j = 0} 50 | } 51 | } 52 | }, 53 | }; 54 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Fly Bird 6 | 7 | 8 | 9 |
10 |
11 | 小鸟 12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | game over 23 | message 24 | ok 25 |
26 |
27 | 28 | 29 | 30 | 31 | 145 | 146 | --------------------------------------------------------------------------------