中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript怎么實現氣球打字游戲

發布時間:2022-04-06 14:02:54 來源:億速云 閱讀:160 作者:iii 欄目:開發技術

這篇文章主要介紹“JavaScript怎么實現氣球打字游戲”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaScript怎么實現氣球打字游戲”文章能幫助大家解決問題。

    一、實現效果

    JavaScript怎么實現氣球打字游戲

    1、定義球的類

    氣球類中我們需要對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怎么實現氣球打字游戲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    许昌市| 高邮市| 昌平区| 盐边县| 新绛县| 奉化市| 乐亭县| 武冈市| 永顺县| 通化市| 阜康市| 汕头市| 蛟河市| 阳东县| 彩票| 洪湖市| 合阳县| 宾阳县| 屏山县| 唐海县| 颍上县| 万年县| 昌乐县| 行唐县| 华阴市| 桑日县| 息烽县| 惠州市| 蓝山县| 神农架林区| 偃师市| 安吉县| 嘉义县| 泸西县| 阳江市| 缙云县| 玉门市| 新化县| 贡山| 内乡县| 石景山区|