<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
端午節馬上就到了,聽說你們公司沒發粽子大禮包?沒關係,這裡用 JS 實現了一個簡單的接粽子小遊戲,能接到多少粽子,完全看你手速,不用擔心端午沒粽子了。
在遊戲螢幕內,會隨機的從頂部掉落粽子,通過滑鼠移動到粽子上並點選,成功接住粽子,得到積分。在設定面板中,可以設定遊戲難度,分為簡單、很難、超級難三種等級,不同等級的積分也是不同的,玩家可根據自己的手速進行設定。遊戲結束後,可看到自己的成績。實現出來的效果如下(可執行程式碼已發到碼上掘金,連結在文章底部,可進入玩一玩):
在遊戲螢幕內,需要源源不斷的新增我們的主角--粽子大哥,可以讓玩家點選,並且可以移除掉被點選的粽子元素。
<div id="app"> <div class="main"></div> </div>
把 div.mian
來作為遊戲主區域,粽子元素新增到該區域中。使用 document.createElement
來建立一個 img 元素,並設定圖片地址,樣式類,以及該粽子的初始位置。這裡用 Math.random()
來給粽子一個隨機的初始 left 值。監聽粽子元素的點選事件,當被點選時則移除該元素,表示粽子已被玩家接住了。
let main = document.querySelector('.main'); function addElement(){ let elem = document.createElement('img'); elem.src = 'zongzi.png'; elem.classList.add('zongzi'); elem.style.left = Math.random()*730 + 'px'; main.appendChild(elem); elem.addEventListener('click', function(){ main.removeChild(elem) }) }
.zongzi{ position: absolute; top: -70px; width: 70px; height: 70px; background-color: #ff9900; border-radius: 50%; }
該樣式給粽子設定了寬高,當我們設定遊戲難度時,我們可以動態改變粽子的寬高,粽子越大,越容易被點選到,所以難度越高時,可以調小粽子的寬高,需要更厲害的手速才有可能點選到。
掉落動畫沒加什麼動效,所以比較簡單,用 animation
實現一個元素從上到下的直線移動過渡效果。
.main{ position: relative; width: 800px; height: 500px; background-color: #2b4650; overflow: hidden; } .zongzi{ ... ... animation: move 3s ease-in; } @keyframes move { to{ transform: translateY(570px); } }
translateY(570px)
縱向位移 570,是為了保證沒被點選到的粽子完全離開了遊戲主區域才算消失。
使用 input[type=radio]
元素供玩家選擇難度。平時用慣了元件,對於原生的 radio 選擇實現,你還記得多少?跟著一起復習一遍吧
<div class="difficulty"> <span>難度:</span> <input type="radio" name="difficulty" value="1" checked>簡單 <input type="radio" name="difficulty" value="2">很難 <input type="radio" name="difficulty" value="3">超級難 </div>
let difficulty = 1; // 用來表示當前難度等級 let radios = document.querySelectorAll('input[type=radio]'); radios.forEach(radio => { radio.addEventListener('change', function(){ difficulty = radio.value; }) })
監聽 radio 元素的 change 事件,而不是 click 事件,因為 click 重複點選時還會繼續觸發,不是我們需要的。只有在難度等級發生變化時才需要觸發。
當難度變化時,主要是改變粽子的大小和下落速度來實現玩家更難接住粽子,根據 difficulty 值來設定粽子元素的樣式類。
let elem = document.createElement('img'); elem.src = 'zongzi.png'; elem.classList.add('zongzi' + difficulty);
.zongzi1{ ... ... width: 70px; height: 70px; animation: move 3s ease-in; } .zongzi2{ ... ... width: 50px; height: 50px; animation: move 2s ease-in; } .zongzi3{ ... ... width: 40px; height: 40px; animation: move 1s ease-in; }
遊戲開始時,進入倒計時,粽子開始掉落,並計算玩家得分。
<div id="app"> <div class="main"> <div class="time"> 倒計時:<span>30</span>s </div> </div> <div class="setting"> <div class="difficulty mgb10"> ... ... </div> <div class="btn">開始遊戲</div> <div class="result">總分:<span>0</span></div> </div> </div>
let result = 0; let btn = document.querySelector('.btn'); let time = document.querySelector('.time span'); let isStart = false; btn.addEventListener('click', function(){ if(!isStart){ isStart = true; result = 0; let elemId = setInterval(function(){ addElement(); }, 500) let timeNumber = 30; let numberId = setInterval(function(){ timeNumber -= 1; time.innerHTML = timeNumber; if(timeNumber <= 0){ clearInterval(numberId); clearInterval(elemId); isStart = false; alert('遊戲結束'); } }, 1000) } })
整體實現還是比較簡單的,不過也還是存在很多可以優化的地方。像點選粽子後,可以有一些接住的效果後再消失,粽子的掉落路徑,可以多一些花樣等,可以給遊戲增加一些樂趣。
到此這篇關於基於JS實現接粽子小遊戲的範例程式碼的文章就介紹到這了,更多相關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