<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
遊戲中玩家必須控制一隻小鳥,跨越由各種不同長度水管所組成的障礙,而這隻鳥其實是根本不會飛的……所以玩家每點選一下小鳥就會飛高一點,不點選就會下降,玩家必須控制節奏,拿捏點選螢幕的時間點,讓小鳥能在落下的瞬間跳起來,恰好能夠通過狹窄的水管縫隙,只要稍一分神,馬上就會失敗陣亡。
包含功能 :
1: 隨機背景
2: 進行遊戲
3:玩家分數排行榜
遊戲介面程式碼
不多介紹
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Fancy Bird</title> <link rel="stylesheet" href="./css/cscs.css" rel="external nofollow" > <link rel="shortcut icon" href="./birds/birds1.png" rel="external nofollow" type="image/x-icon"> </head> <body> <div class="map"> <img src="./logo/flappyBird.png" alt="" class="flappyBird"> <div class="home"> <img src="./home/start.png" alt="" class="start"> <img src="./home/ranking.png" alt="" class="ranking"> </div> <div class="ready"> <img src="./logo/getReody.png" alt="" class="getReody"> <img src="./home/go.png" alt="" class="go"> </div> <div class="finish"> <img src="./logo/gameOver.png" alt="" class="gameOver"> <div class="score"> <i class="node">66</i> <i class="now"></i> <img src="./home/gold.png" alt="" class="gold"> </div> <img src="./home/start.png" alt="" class="start2"> <img src="./home/ranking.png" alt="" class="ranking"> </div> </div> <script src="./js/jquery-2.2.0.min.js"></script> <script src="./js/game.js"></script> <script src="./js/init.js"></script> </body> </html>
不多介紹
* { margin: 0; padding: 0; } .map { margin: 20px auto; width: 520px; height: 855px; background: url(../mian/sky1.png); position: relative; overflow: hidden; cursor: pointer; text-align: left; } p { position: absolute; font-size: 30px; } h4 { text-align: center; line-height: 10px; } .play { position: absolute; width: 52px; height: 45px; left: -10%; top: -10%; background: url(../birds/birds1.png) center; } .pillarTop { position: absolute; width: 52px; height: 420px; background: url(../TheConduit/pipe2.png) center no-repeat; left: 550px; } .pillarBottom { position: absolute; width: 52px; height: 420px; background: url(../TheConduit/pipe1.png) center no-repeat; left: 550px; bottom: 0; } .del { position: absolute; right: 10px; top: 0; font-size: 30px; } .flappyBird { width: 300px; position: absolute; top: 204px; left: 540px; } .home, .ready { position: absolute; top: 50%; left: 50%; transform: translateX(-50%); } .home { left: -50%; } .ready { transform: translate(-50%, -50%); display: none; } .ready .go { margin-left: 29%; } .ready .getReody { margin-left: 32px; } .gold { position: absolute; left: 30px; top: -545px; } .finish { width: 250px; text-align: center; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: none; } .score { position: relative; width: 231px; height: 117px; background: url(../home/finish.png); margin-left: 9px; z-index: 999; } .score .node { position: absolute; left: 175px; top: 35px } .score .now { position: absolute; left: 175px; top: 85px; }
禁止頁面選擇以及滑鼠右鍵
document.oncontextmenu = function () { return false; }; document.onselectstart = function () { return false; };
這裡我有兩張背景圖片,定義兩個亂數,利用定時器使背景的x軸持續減少,然後形成背景移動;使用css的動畫一樣的效果,因人而異
// 背景移動 const map = document.querySelector('.map'); let mNum = getRandom(1, 2) map.style.background = "url(./mian/sky" + mNum + ".png)" let [Mbac, Pbac, y, angle, deg, flag, p, flagg] = [0, 1, 0, 0, -360, false, 0, true]; let [NO1, NO2, NO3, NO4, no5, chicken] = [null, null, null, null, null, null] function init() { NO1 = setInterval(creatorPillar, 1200); NO5 = setTimeout(time, 2200); NO2 = setInterval(judge, 1000 / 60); } function move() { Mbac++; map.style.backgroundPositionX = "-" + Mbac + "px"; }
定義一個定時器持續畫素鳥y座標減少,這樣就會慢慢下落,繫結滑鼠彈起事件,點選一次需要把畫素鳥座標增加
// 玩家 let play = document.createElement('div'); play.className = 'play'; map.append(play); function a() { Pbac++; if (Pbac > 3) Pbac = 1; play.style.background = " url(./birds/birds" + Pbac + ".png)"; }; function judge() { if (flagg) { y += 0.2 play.style.top = play.offsetTop + y + "px" } if (!flagg) { y -= 4.5 play.style.top = play.offsetTop + y + "px" let time = setTimeout(() => { clearTimeout(time); flagg = true; }, 10); } if (play.offsetTop <= 50) { play.style.top = 50 + "px"; } if (play.offsetTop >= map.offsetHeight - play.offsetHeight) { play.style.top = map.offsetHeight - play.offsetHeight + "px"; stop() } } document.onmousedown = function () { y = -5 }
我寫的是一個函數 然後定時器呼叫這個函數,然後生成兩個柱子
// 生成柱子 function creatorPillar() { let pillarTop = document.createElement('div'); let pillarBottom = document.createElement('div'); let random = getRandom(100, 300) / 2 pillarTop.className = "pillarTop"; pillarBottom.className = "pillarBottom"; map.append(pillarTop); map.append(pillarBottom); pillarTop.style.top = -random + "px" pillarBottom.style.bottom = -random + "px" NO4 = setInterval(() => { pillarTop.style.left = (pillarTop.offsetLeft -= 5) + "px" pillarBottom.style.left = (pillarBottom.offsetLeft -= 5) + "px" if (pillarTop.offsetLeft <= -100 && pillarBottom.offsetLeft <= -100) { pillarTop.remove(); pillarBottom.remove(); } if (pz(play, pillarTop)) { stop(); siw() } if (pz(play, pillarBottom)) { stop(); siw() } }, 20); }
由於我很懶很懶很懶很懶,就用定時器做的增加,可以靠判斷來判斷畫素鳥是否經過了柱子,我沒寫不代表我不會寫奧,因人而異嘛
// 積分 function time() { let P = document.createElement('p'); map.append(P); NO3 = setInterval(() => { p++; P.innerHTML = p; }, 1250); } function pz(node1, node2) { let l1 = node1.offsetLeft; let r1 = node1.offsetLeft + node1.offsetWidth; let t1 = node1.offsetTop; let b1 = node1.offsetTop + node1.offsetHeight; let l2 = node2.offsetLeft; let r2 = node2.offsetLeft + node2.offsetWidth; let t2 = node2.offsetTop; let b2 = node2.offsetTop + node2.offsetHeight; if (l2 > r1 || r2 < l1 || t2 > b1 || b2 < t1) { return false; } else { return true; } } function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function stop() { clearInterval(NO1); clearInterval(NO2); clearInterval(NO3); clearInterval(NO4); clearInterval(chicken); die(); } function die() { document.onclick = null; setInterval(() => { deg += 7; play.style.top = (play.offsetTop += 5) + "px"; play.style.transform = "rotateZ(" + deg + "deg)"; if (play.offsetTop <= 0) play.style.top = 0 + "px" if (play.offsetTop >= map.offsetHeight - play.offsetHeight) { // deg = 90; play.style.top = map.offsetHeight - play.offsetHeight + "px" } }, 100); data() }
程式碼要自己先看懂哦!
到此這篇關於JavaScript實現畫素鳥小遊戲的文章就介紹到這了,更多相關js畫素鳥小遊戲內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45