js原生之鍋打灰太狼

0. 前言

現(xiàn)在網上的小游戲太多了许师,4399啊房蝉,7k7k啊什么的,就有這鍋打灰太狼的游戲微渠,覺得挺有意思搭幻,就做一個看看,哈哈3雅琛L刺!!


timg.jpg

1. 簡介

鍋打灰太狼是一款老少通吃云芦,男女皆宜的益智游戲俯逾,哈哈!

2. 思路

  1. 把靜態(tài)頁面做出來
  2. 找到每個洞穴
  3. 隨機出現(xiàn)灰太狼和小灰灰讓它們隨機從洞穴出現(xiàn)
  4. 點擊事件:打灰太狼加分舅逸,打小灰灰減分
  5. 添加時間桌肴,時間到了停止游戲
  6. 最終結果

3. 代碼實現(xiàn)

3.1 靜態(tài)頁面

HTML結構
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>灰太狼</title>
    <link rel="stylesheet" type="text/css" href="灰太狼.css">
</head>
<body>
    <div id="outer">
        <audio id="music" src="網絡歌手貓咪寶貝.mp3"></audio>
        <div id="fraction">0</div>
        <div id="time"></div>
        <div id="wolfs"></div>
        <div id="startMenu">
            <a href="#" id="start">Start</a>
        </div>
        <div id="endMenu"></div>
        <a href="#" id="reload">重新開始</a>
    </div>
    <script type="text/javascript" src="Base.js"></script>
    <script type="text/javascript" src="灰太狼.js"></script>
</body>
</html>
CSS樣式
*{
    margin: 0;
    padding: 0;
    font-family: "微軟雅黑";
}

#outer{
    background:url(game_bg.jpg) 0 0 no-repeat;
    position: relative;
    width: 320px;
    height: 480px;
    margin: 0 auto;
}

#fraction{
    position: absolute;
    left: 65px;
    top: 13px;
    color: white;
}

#time{
    position: absolute;
    width: 180px;
    height: 16px;
    left: 63px;
    top: 66px;
    background: url(progress.png) 0 0 no-repeat;
}
#wolfs{
    position: absolute;
}
#wolfs img{ 
    position:absolute;
}

#startMenu{
    position: absolute; 
    width: 320px; 
    text-align: center; 
    left: 0; 
    top: 200px;
}

#start,#endMenu,#reload{
    line-height:50px; 
    font-size:30px; 
    font-weight:bold; 
    color:#F00; 
    display:block; 
    text-decoration:none;
}

#endMenu{
    position: absolute; 
    width: 320px; 
    text-align: center; 
    top: 200px; 
    left: 0; 
    display: none;
}

#reload{
    position: absolute;
    bottom: 0px;
    left: 0px;
    display: none;
}
圖片.png

3.2 找到洞穴

//洞穴坐標
arrPos = [["98px","115px"],["17px","160px"],["15px","221px"],["30px","294px"],["122px","274px"],["207px","296px"],["200px","212px"],["187px","142px"],["100px","192px"]];

3.3 隨機出現(xiàn)灰太狼和小灰灰讓它們隨機從洞穴出現(xiàn)

function creatWolf() {
    wolfHouse.onclick = null;
    //創(chuàng)建img顯示狼
    var wolfImg = document.createElement("img");
    //設置狼的種類
    var wolfType = randomNum(0, 10) > 3 ? "h" : "x";
    //隨機獲取狼窩的位置
    var a = randomNum(0, 9);
    var position = arrPos[a];
    //設置初始圖片編號
    wolfHouse.index = 0;
    //設置未被點擊
    wolfHouse.clicked = false;
    //設置img的src屬性
    wolfImg.src = wolfType + wolfHouse.index + ".png";
    //將狼添加到頁面
    wolfHouse.appendChild(wolfImg);
    //設置位置
    wolfHouse.style.left = position[0];
    wolfHouse.style.top = position[1];
    // 讓狼動起來
    var tmp = -1;
    var showTime = setInterval(function(){
        tmp++;
        if(tmp < liftCircle.length){
            wolfHouse.index = liftCircle[tmp];
            wolfImg.src = wolfType + wolfHouse.index + ".png";
        }else{
            clearInterval(showTime);
            wolfHouse.removeChild(wolfImg);
        }
    },80);

3.4 點擊事件:打灰太狼加分,打小灰灰減分

wolfHouse.onclick = function() {
        clearInterval(timer);
        //如果執(zhí)行了點擊就不要在點擊了
        if (this.clicked) {
            return;
        }
        //分數
        if (wolfType == "h") {
            fraction.innerHTML = parseInt(fraction.innerHTML) + 10;
        } else {
            fraction.innerHTML = parseInt(fraction.innerHTML) - 10;
        }

        //關掉動畫
        wolfHouse.index = 5;
        clearInterval(showTime);
        var hitWolf = setInterval(function(){
            if(wolfHouse.index < 10){
                console.log(wolfHouse.index);
                wolfImg.src = wolfType + wolfHouse.index + ".png";
                wolfHouse.index++;
            }else{
                clearInterval(hitWolf);
                wolfHouse.removeChild(wolfImg);
                timer = setInterval(func, 1000)
            }
        }, 100);

        this.clicked = true;
    }
}
GIF.gif

3.5 添加時間

function timeLineRun(){
    var timeLineTimer = setInterval(function(){
        if(timeLine.offsetWidth > 0) {
            timeLine.style.width = timeLine.offsetWidth - 1 + "px";
        } else {
            //清除計時器
            clearInterval(timeLineTimer);
            clearInterval(timer);
            //關閉背景音樂
            jsMusic.pause();
            //出現(xiàn)結束語
            endMenu.innerHTML = "game over!<br/>你的得分是:" + fraction.innerHTML
            endMenu.style.display = "block";
            //出現(xiàn)重新開始
            reloadBtn.style.display = "block";
        }
    }, 200);
}

3.6 最終結果

//進度條
var timeLine = document.getElementById("time");
//開始按鈕
var startBtn = document.getElementById("start");
//開始菜單
var startMenu = document.getElementById("startMenu");
//結束菜單
var endMenu = document.getElementById("endMenu");
//分數
var fraction = document.getElementById("fraction");
//重新開始按鈕
var reloadBtn = document.getElementById("reload");
//狼窩
var wolfHouse = document.getElementById("wolfs");
//背景音樂
var jsMusic = document.getElementById("music");
//動畫周期
var liftCircle = [0,1,2,3,4,5,4,3,2,1,0],

//洞穴坐標
arrPos = [["98px","115px"],["17px","160px"],["15px","221px"],["30px","294px"],["122px","274px"],["207px","296px"],["200px","212px"],["187px","142px"],["100px","192px"]];

var timer = 0;
//點擊開始
startBtn.onclick = function() {
    startMenu.style.display = "none";
    //進度條開始讀條
    timeLineRun();
    //背景音樂
    // jsMusic.play();
    timer = setInterval(func, 1000);
};
function func() {
    if (timeLine.offsetWidth > 0) {
        //創(chuàng)建灰太狼
        creatWolf();
    } else {
        clearInterval(timer);
    }
}

function timeLineRun(){
    var timeLineTimer = setInterval(function(){
        if(timeLine.offsetWidth > 0) {
            timeLine.style.width = timeLine.offsetWidth - 1 + "px";
        } else {
            //清除計時器
            clearInterval(timeLineTimer);
            clearInterval(timer);
            //關閉背景音樂
            jsMusic.pause();
            //出現(xiàn)結束語
            endMenu.innerHTML = "game over!<br/>你的得分是:" + fraction.innerHTML
            endMenu.style.display = "block";
            //出現(xiàn)重新開始
            reloadBtn.style.display = "block";
        }
    }, 200);
}


//重新開始
reloadBtn.onclick = function() {
    window.location.reload();
}

function creatWolf() {
    wolfHouse.onclick = null;
    //創(chuàng)建img顯示狼
    var wolfImg = document.createElement("img");
    //設置狼的種類
    var wolfType = randomNum(0, 10) > 3 ? "h" : "x";
    //隨機獲取狼窩的位置
    var a = randomNum(0, 9);
    var position = arrPos[a];
    //設置初始圖片編號
    wolfHouse.index = 0;
    //設置未被點擊
    wolfHouse.clicked = false;
    //設置img的src屬性
    wolfImg.src = wolfType + wolfHouse.index + ".png";
    //將狼添加到頁面
    wolfHouse.appendChild(wolfImg);
    //設置位置
    wolfHouse.style.left = position[0];
    wolfHouse.style.top = position[1];
    // 讓狼動起來
    var tmp = -1;
    var showTime = setInterval(function(){
        tmp++;
        if(tmp < liftCircle.length){
            wolfHouse.index = liftCircle[tmp];
            wolfImg.src = wolfType + wolfHouse.index + ".png";
        }else{
            clearInterval(showTime);
            wolfHouse.removeChild(wolfImg);
        }
    },80);

    //給狼設置點擊事件
    wolfHouse.onclick = function() {
        clearInterval(timer);
        //如果執(zhí)行了點擊就不要在點擊了
        if (this.clicked) {
            return;
        }
        //分數
        if (wolfType == "h") {
            fraction.innerHTML = parseInt(fraction.innerHTML) + 10;
        } else {
            fraction.innerHTML = parseInt(fraction.innerHTML) - 10;
        }

        //關掉動畫
        wolfHouse.index = 5;
        clearInterval(showTime);
        var hitWolf = setInterval(function(){
            if(wolfHouse.index < 10){
                wolfImg.src = wolfType + wolfHouse.index + ".png";
                wolfHouse.index++;
            }else{
                clearInterval(hitWolf);
                wolfHouse.removeChild(wolfImg);
                timer = setInterval(func, 1000)
            }
        }, 100);
        this.clicked = true;
    }
}
GIF.gif

4. 結束語

最后的效果也就是這樣了堡赔,如果你覺得哪里寫的不夠好识脆,有什么好的建議设联,可以給我留言告訴我善已,謝謝,三克油@肜;煌拧!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宫蛆,一起剝皮案震驚了整個濱河市艘包,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耀盗,老刑警劉巖想虎,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叛拷,居然都是意外死亡舌厨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門忿薇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裙椭,“玉大人躏哩,你說我怎么就攤上這事∪嗳迹” “怎么了扫尺?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炊汤。 經常有香客問我正驻,道長,這世上最難降的妖魔是什么抢腐? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任拨拓,我火速辦了婚禮,結果婚禮上氓栈,老公的妹妹穿的比我還像新娘渣磷。我一直安慰自己,他們只是感情好授瘦,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布醋界。 她就那樣靜靜地躺著,像睡著了一般提完。 火紅的嫁衣襯著肌膚如雪形纺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天徒欣,我揣著相機與錄音逐样,去河邊找鬼。 笑死打肝,一個胖子當著我的面吹牛脂新,可吹牛的內容都是我干的。 我是一名探鬼主播粗梭,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼争便,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了断医?” 一聲冷哼從身側響起滞乙,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鉴嗤,沒想到半個月后斩启,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡醉锅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年兔簇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡男韧,死狀恐怖朴摊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情此虑,我是刑警寧澤甚纲,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站朦前,受9級特大地震影響介杆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜韭寸,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一春哨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧恩伺,春花似錦赴背、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褒脯,卻和暖如春便瑟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背番川。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工到涂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颁督。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓践啄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親适篙。 傳聞我的和親對象是個殘疾皇子往核,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • <!DOCTYPE html> Document /* 標簽樣式初始化 */body{margin:0;p...
    三葉松閱讀 776評論 0 2
  • 廚渣大清早上網搜菜譜箫爷,搜到白斬雞的時候被感動了:太容易了吧也嚷节。 買了雞,順利地完成了虎锚。 哈哈硫痰。我和娃今天的晚飯有著...
    諾拉的以后閱讀 1,655評論 0 0
  • 古人感恩的名句 1、孝子之至窜护,莫大乎尊親;尊親之至效斑,莫大乎以天下養(yǎng)≈悖——孟子 2缓屠、哀哀父母奇昙,生我劬勞〉型辏——《詩經》...
    盜草姑娘閱讀 246評論 0 0