<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
氣球類中我們需要對26個字元進行處理
this.arr = "abcdefghijklmnopqrstuvwxyz".split("");
生成一個隨機字母
this.index = parseInt(Math.random() * this.arr.length); // 定義隨機字元 this.str = this.arr[this.index];
生成一個div標籤並對圖片進行處理
// 元素屬性 this.dom = document.createElement("div"); // 圖片屬性 this.img = img; // 圖片的寬 this.width = this.img.width / 4; // 圖片的高 this.height = this.img.height / 3; // 圖片的背景定位X this.positionX = parseInt(Math.random() * 4); // 圖片的背景定位Y this.positionY = parseInt(Math.random() * 3);
關於樣式的處理操作
// 設定樣式 this.setStyle = function() { // 設定元素定位 this.dom.style.position = "absolute"; this.dom.style.left = 0; // 設定元素的內部文字 this.dom.innerHTML = this.str; // 設定文字樣式 this.dom.style.lineHeight = this.height * 2 / 3+ "px"; this.dom.style.textAlign = "center"; this.dom.style.fontSize = "20px"; this.dom.style.fontWeight = "bold"; this.dom.style.top = parseInt(Math.random() * (document.documentElement.clientHeight - this.height)) + "px"; // 設定元素的寬度和高度 this.dom.style.width = this.width + "px"; this.dom.style.height = this.height + "px"; // 設定元素背景圖片 this.dom.style.backgroundImage = "url(" + this.img.src + ")"; // 設定元素的背景定位 this.dom.style.backgroundPositionX = -this.width * this.positionX + "px"; this.dom.style.backgroundPositionY = -this.height * this.positionY + "px"; }
定義一個上樹的方法
// 上樹方法 this.upTree = function() { document.body.appendChild(this.dom); }
我們需要檢測氣球是否到達瀏覽器邊緣
// 檢測氣球是否到達邊界 this.check = function() { // 判斷定位left值值是否到達別界 if (this.dom.offsetLeft >= document.documentElement.clientWidth - this.width) { // 設定定位值 this.dom.style.left = document.documentElement.clientWidth - this.width + "px"; return true; } return false; }
定義一個下樹的方法
// 下樹方法 this.boom = function() { this.dom.parentNode.removeChild(this.dom); }
定義一個移動的方法,其中的數位表示氣球移動的速度
// 移動方法 this.move = function() { this.dom.style.left = this.dom.offsetLeft + 5 + "px"; }
定義初始化的方法並執行
// 定義初始化方法 this.init = function() { this.setStyle(); this.upTree(); } // 執行init this.init();
建立圖片元素
// 建立圖片元素 var img = document.createElement("img"); // 設定路徑 img.src = "images/balloon.jpg";
氣球每隔多少時間生成一個,我們需要設定定時器以及氣球到達邊界的處理,其中程式碼中的70
表示每移動70次建立一個氣球。
// 定義陣列 var arr = []; // 定義定時器 var timer = null; // 定義一個號誌 var count = 0; // 新增事件 img.onload = function() { // 初始化氣球物件 var balloon = new Balloon(img); // 第一個氣球也要放入陣列中 arr.push(balloon); // 賦值定時器 timer = setInterval(function() { // 號誌++ count++; // 判斷號誌 if (count % 70 === 0) { // 氣球每移動70次, 建立一個氣球 arr.push(new Balloon(img)); } // 迴圈陣列 for (var i = 0; i < arr.length; i++) { // 呼叫move方法 arr[i].move(); // 呼叫check方法 var result = arr[i].check(); // 判斷是否到達別界 if (result) { // 說明氣球到達邊界了 // 將氣球從陣列中移除 arr.splice(i, 1); // 防止陣列塌陷 i--; // 清除並接觸邊界進行彈窗 // clearInterval(this.timer) // alert('遊戲結束') } } }, 20)
最後就是我們在氣球未觸到邊緣時,通過鍵盤清除打出對應的字母
// 給document繫結鍵盤事件 document.onkeydown = function(e) { // 獲取使用者按下的字元 var key = e.key; // 拿著這個key與陣列中每一個氣球物件的str屬性值作比對,如果比對上了,就讓氣球從陣列中移除並且從dom中移除 for (var i = 0; i < arr.length; i++) { // 判斷 if (key.toLowerCase() === arr[i].str.toLowerCase()) { // 呼叫boom方法 arr[i].boom(); // 移除當前項 arr.splice(i, 1); break; } } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 定義氣球類 function Balloon(img) { // 定義攜帶的字元 this.arr = "abcdefghijklmnopqrstuvwxyz".split(""); // 定義索引 this.index = parseInt(Math.random() * this.arr.length); // 定義隨機字元 this.str = this.arr[this.index]; // 元素屬性 this.dom = document.createElement("div"); // 圖片屬性 this.img = img; // 圖片的寬 this.width = this.img.width / 4; // 圖片的高 this.height = this.img.height / 3; // 圖片的背景定位X this.positionX = parseInt(Math.random() * 4); // 圖片的背景定位Y this.positionY = parseInt(Math.random() * 3); // 設定樣式 this.setStyle = function() { // 設定元素定位 this.dom.style.position = "absolute"; this.dom.style.left = 0; // 設定元素的內部文字 this.dom.innerHTML = this.str; // 設定文字樣式 this.dom.style.lineHeight = this.height * 2 / 3+ "px"; this.dom.style.textAlign = "center"; this.dom.style.fontSize = "20px"; this.dom.style.fontWeight = "bold"; this.dom.style.top = parseInt(Math.random() * (document.documentElement.clientHeight - this.height)) + "px"; // 設定元素的寬度和高度 this.dom.style.width = this.width + "px"; this.dom.style.height = this.height + "px"; // 設定元素背景圖片 this.dom.style.backgroundImage = "url(" + this.img.src + ")"; // 設定元素的背景定位 this.dom.style.backgroundPositionX = -this.width * this.positionX + "px"; this.dom.style.backgroundPositionY = -this.height * this.positionY + "px"; } // 上樹方法 this.upTree = function() { document.body.appendChild(this.dom); } // 檢測氣球是否到達邊界 this.check = function() { // 判斷定位left值值是否到達別界 if (this.dom.offsetLeft >= document.documentElement.clientWidth - this.width) { // 設定定位值 this.dom.style.left = document.documentElement.clientWidth - this.width + "px"; return true; } return false; } // 下樹方法 this.boom = function() { this.dom.parentNode.removeChild(this.dom); } // 移動方法 this.move = function() { this.dom.style.left = this.dom.offsetLeft + 5 + "px"; } // 定義初始化方法 this.init = function() { this.setStyle(); this.upTree(); } // 執行init this.init(); } // 建立圖片元素 var img = document.createElement("img"); // 設定路徑 img.src = "images/balloon.jpg"; // 定義陣列 var arr = []; // 定義定時器 var timer = null; // 定義一個號誌 var count = 0; // 新增事件 img.onload = function() { // 初始化氣球物件 var balloon = new Balloon(img); // 第一個氣球也要放入陣列中 arr.push(balloon); // 賦值定時器 timer = setInterval(function() { // 號誌++ count++; // 判斷號誌 if (count % 70 === 0) { // 氣球每移動70次, 建立一個氣球 arr.push(new Balloon(img)); } // 迴圈陣列 for (var i = 0; i < arr.length; i++) { // 呼叫move方法 arr[i].move(); // 呼叫check方法 var result = arr[i].check(); // 判斷是否到達別界 if (result) { // 說明氣球到達邊界了 // 將氣球從陣列中移除 arr.splice(i, 1); // 防止陣列塌陷 i--; // 清除並接觸邊界進行彈窗 // clearInterval(this.timer) // alert('遊戲結束') } } }, 20) } // 給document繫結鍵盤事件 document.onkeydown = function(e) { // 獲取使用者按下的字元 var key = e.key; // 拿著這個key與陣列中每一個氣球物件的str屬性值作比對,如果比對上了,就讓氣球從陣列中移除並且從dom中移除 for (var i = 0; i < arr.length; i++) { // 判斷 if (key.toLowerCase() === arr[i].str.toLowerCase()) { // 呼叫boom方法 arr[i].boom(); // 移除當前項 arr.splice(i, 1); break; } } } </script> </body> </html>
效果:
到此這篇關於JavaScript實現氣球打字的小遊戲的文章就介紹到這了,更多相關JavaScript氣球打字遊戲內容請搜尋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