天天看點

狂拍小灰灰遊戲

今天看到一個類似于砸地鼠的遊戲 感覺很有趣 于是在網上找了一些圖檔資源 也做了一個 接下來上代碼

<!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">

<link rel="stylesheet" href="../css/狂拍灰太狼.css">

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>

<title>狂拍灰太狼小遊戲</title>

</head>

<body>

<div class="container">

<h1 class="score">0</h1>

<div class="progress"></div>

<button class="start big">開始遊戲</button>

<div class="rules">遊戲規則</div>

<!-- 遊戲規則 -->

<div class="rule">

<p>遊戲規則</p>

<p>1:遊戲時間60s</p>

<p>2:拼手速 毆打灰太狼+10分</p>

<p>3:毆打小灰灰-10分</p>

<a href="#" id="close">[關閉]</a>

</div>

<!-- 重新開始 -->

<div class="mask">

<h1>GAME OVER</h1>

<button class="big" id="reStart">重新開始</button>

<!-- jq -->

<script>

$(function() {

// 監聽遊戲規則

$(".rules").click(function() {

$(".rule").stop().fadeIn(100);

})

// 監聽關閉按鈕

$("#close").click(function() {

$(".rule").stop().fadeOut(100);

// 監聽開始按鈕

$(".start").click(function() {

$(".start").stop().fadeOut(100)

// 調用處理進度條的方法

ProgressHandler();

// 調用灰太狼動畫的方法

wolfAnimation()

// 監聽重新開始事件

$("#reStart").click(function() {

$(".mask").stop().fadeOut(100)

// 調用進度條

ProgressHandler()

// 點選重新開始後 調用動畫

//  分數重置為0分

$(".score").text(0)

window.progressWidth;

// 定義一個專門處理進度條的方法

function ProgressHandler() {

// 重新設定進度條寬度

$(".progress").css({

width: 180,

// 開啟一個進度條定時器

var timer = setInterval(function() {

// 擷取目前的進度條長度

progressWidth = $(".progress").width()

// 每次減少的寬度重新指派

progressWidth -= 20

// 将目前的長度指派給進度條

width: progressWidth,

// 監聽是否走完

if (progressWidth <= 0) {

// 清除定時器

clearInterval(timer);

// 顯示重新開始界面

$(".mask").stop().fadeIn(100)

// 顯示重新開始 動畫不顯示

stopWolfAnmation();

}

}, 2000)

// 狼動畫的定時器 拿出 不然之後的停止動畫通路不到

var wolfTimer;

// 停止動畫

function stopWolfAnmation() {

$(".ig").remove()

clearInterval(wolfTimer)

// 灰太狼開始動畫

function wolfAnimation() {

// 定義兩個數組儲存所有的動畫圖檔

var wolf_1 = ['../images/h0.png', '../images/h1.png', '../images/h2.png', '../images/h3.png', '../images/h4.png', '../images/h5.png', '../images/h6.png', '../images/h7.png', '../images/h8.png', '../images/h9.png']

var wolf_2 = ['../images/x0.png', '../images/x1.png', '../images/x2.png', '../images/x3.png', '../images/x4.png', '../images/x5.png', '../images/x6.png', '../images/x7.png', '../images/x8.png', '../images/x9.png']

// 定義一個數組儲存所有可能出現的位置

var arrPos = [{

left: "100px",

top: "115px",

}, {

left: "20px",

top: "160px",

left: "190px",

top: "142px",

left: "105px",

top: "193px",

left: "19px",

top: "221px",

left: "202px",

top: "212px",

left: "120px",

top: "275px",

left: "30px",

top: "295px",

left: "209px",

top: "297px",

}];

// console.log(posIndex)

// 建立一個随機圖檔

var $wolfImage = $("<img src='' class='ig'>")

// 随機擷取圖檔的位置 随即生成0-8

var posIndex = Math.round(Math.random() * 8);

// 設定圖檔顯示的位置

$wolfImage.css({

position: "absolute",

top: arrPos[posIndex].top,

left: arrPos[posIndex].left,

});

// 随機擷取數組類型 即灰太狼小灰灰 0-1

var wolfType = Math.round(Math.random()) == 0 ? wolf_1 : wolf_2

// 設定圖檔

window.wolfIndex = 0;

window.wolfIndexEnd = 5;

wolfTimer = setInterval(function() {

// 加入判斷隻進行到第五張圖

if (wolfIndex > wolfIndexEnd) {

$wolfImage.remove()

clearInterval(wolfTimer);

// 循環進行圖檔動畫 引入

$wolfImage.attr("src", wolfType[wolfIndex])

wolfIndex++;

}, 300)

// 将圖檔添加到頁面

$(".container").append($wolfImage);

// 添加遊戲規則 傳入添加的圖檔

gameRules($wolfImage);

// 定義遊戲規則函數

function gameRules($wolfImage) {

// 拿到目前圖檔的位址判斷

$wolfImage.one("click", function() {

// 點選之後立馬變為點選到的動畫 修改索引

window.wolfIndex = 5

window.wolfIndexEnd = 9

var src = $(this).attr("src")

var flag = src.indexOf("h") >= 0

// console.log(flag)

if (flag) {

// +10

$(".score").text(parseInt($(".score").text()) + 10)

console.log(progressWidth)

width: progressWidth + 30,

} else {

// -10

$(".score").text(parseInt($(".score").text()) - 10)

</script>

</body>

</html>

其實整體來說這個遊戲實作并不是很難 遊戲邏輯清楚之後很好實作各個功能,但是還有一些缺點 比如每次出現的動畫比較卡頓,拍打時的音效

不過作為一個jq的練手還是不錯的