欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTML+JS實(shí)現(xiàn)經(jīng)典推箱子游戲

 更新時(shí)間:2022年11月10日 09:13:50   作者:橙子!  
今天,這篇文章將利用HTML,CSS,JS的知識編寫一個(gè)童年經(jīng)典游戲?-?推箱子,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1. 效果展示

2. 游戲介紹

經(jīng)典的推箱子是一個(gè)非常古老游戲,甚至是80,90年代的回憶,目的是在訓(xùn)練你的邏輯思考能力。

在一個(gè)狹小的倉庫中,要求把木箱放到指定的位置,稍不小心就會(huì)出現(xiàn)箱子無法移動(dòng)或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動(dòng)的次序和位置,才能順利的完成任務(wù)。

在移動(dòng)箱子的過程中,是對你的思維能力的一個(gè)訓(xùn)練,今天這款推箱子正是童年的回憶,但是我們的目的是為了通過學(xué)習(xí)源碼的形式,來學(xué)習(xí)前端開發(fā)的知識,熟練掌握HtML標(biāo)簽,CSS屬性和JS邏輯的知識。

3. 游戲規(guī)則

我們的目標(biāo)是把箱子移動(dòng)到指定的地點(diǎn),該地點(diǎn)標(biāo)注為空,當(dāng)我們順利的把箱子移動(dòng)的指定的位置時(shí),標(biāo)注為滿。請你盡量不要把箱子推動(dòng)到角落,那樣,你將無法移動(dòng)它。例如:

我們可以選擇不同的關(guān)卡進(jìn)行闖關(guān),大家在學(xué)習(xí)的過程中也可以添加不同的關(guān)卡,這樣達(dá)到熟練掌握常用標(biāo)簽和屬性的目的。例如:

4. 源碼學(xué)習(xí)

部分HTML代碼:

 <div class="menu" onclick="newgame()">開始新游戲</div>
    <div class="menu" onclick="continuegame()">繼續(xù)游戲</div>
    <div class="menu" onclick="select()">選關(guān)</div>
    <div class="menu" onclick="closewindow()">退出游戲</div>
    <table id="g">
        <tr>
            <td>
                <div class="choice" onclick=start(0)>1</div>
            </td>
            <td>
                <div class="choice" onclick=start(1)>2</div>
            </td>
            <td>
                <div class="choice" onclick=start(2)>3</div>
            </td>
        </tr>
    </table>
    <div class="win" id="notlast" onclick=next(progress)>下一關(guān)</div>
    <div class="win" onclick=returnselect()>選擇關(guān)卡</div>
    <div class="win" onclick=back()>返回</div>
    <div class="side" id="side1" onclick=continuegame()>重試</div>
    <div class="side" id="side2" onclick=leave()>返回</div>

部分樣式代碼:

<style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            background-image: url(./pic.jpg);
            background-size: 100%;
            color: whitesmoke;
            text-align: center;

        }

        h1 {
            font:normal bold 100px 楷體;
            -webkit-font-smoothing: antialiased;
            padding:50px;
        }

        table,
        .menu,
        .choice,
        .win {
            margin: 0 auto;
        }

        div {
            width: 180px;
        }

        td div {
            width: 75px;
            height: 75px;
            margin: 5px;
            border-radius: 5px;
            font-size: 60px;
            line-height: 75px;
            display: none;
        }

        .menu,
        .win {
            position: relative;
            background-color: #6781e0;
            width: 360px;
            height: 80px;
            margin-bottom: 40px;
            line-height: 74px;
            font-size: 50px;
            font-family: "WDKT";
            box-shadow:
                1px 1px 0px #5d77dd,
                2px 2px 0px #5f79de,
                3px 3px 0px #617bdf,
                4px 4px 0px #637de0;
            text-shadow: 5px 5px 2px rgba(0, 0, 0, 0.3);
            border-radius: 40px;
        }

        .side {
            position: relative;
            background-color: #6781e0;
            width: 240px;
            height: 80px;
            margin-bottom: 40px;
            line-height: 74px;
            font-size: 50px;
            font-family: "WDKT";
            box-shadow:
                1px 1px 0px #5d77dd,
                2px 2px 0px #5f79de,
                3px 3px 0px #617bdf,
                4px 4px 0px #637de0;
            text-shadow: 5px 5px 2px rgba(0, 0, 0, 0.3);
            border-radius: 40px;
        }

        .choice {
            background-color: #6781e0;
            width: 80px;
            height: 80px;
            margin: 10px;
            line-height: 74px;
            font-size: 60px;
            font-family: "包圖小白體";
            box-shadow:
                1px 1px 0px #5d77dd,
                2px 2px 0px #5f79de,
                3px 3px 0px #617bdf,
                4px 4px 0px #637de0;
            border-radius: 5px;
        }

        .menu:hover {
            transform: translateX(1px) translateY(3px);
        }

        .choice:hover {
            transform: translateX(1px) translateY(3px);
        }

        .win:hover {
            transform: translateX(1px) translateY(3px);
        }

        .side:hover {
            transform: translateX(1px) translateY(3px);
        }

        #g {
            margin-left: 400px;
            display: none;
        }

        .win,
        .side {
            display: none;
        }

        #side1 {
            position: absolute;
            right: 150px;
            top: 200px;
        }

        #side2 {
            position: absolute;
            right: 150px;
            top: 600px;
        }

    </style>

部分邏輯代碼:

    function up() {
        if (copy[py - 1][px] == 0 || copy[py - 1][px] == 3) {
            if (copy[py][px] == 4) {
                document.getElementById(names[py][px]).innerHTML = "";
                copy[py][px] = 0;
            }
            else if (copy[py][px] == 6) {
                document.getElementById(names[py][px]).innerHTML = "??";
                copy[py][px] = 3;
            }
            if (copy[py - 1][px] == 3) {
                document.getElementById(names[py - 1][px]).innerHTML = "??";
                copy[py - 1][px] = 6;
            }
            else if (copy[py - 1][px] == 0) {
                document.getElementById(names[py - 1][px]).innerHTML = "??";
                copy[py - 1][px] = 4;
            }
            py--;
        }
        else if ((copy[py - 1][px] == 2 || copy[py - 1][px] == 5) && (copy[py - 2][px] == 0 || copy[py - 2][px] == 3)) {
            if (copy[py][px] == 4) {
                document.getElementById(names[py][px]).innerHTML = "";
                copy[py][px] = 0;
            }
            else if (copy[py][px] == 6) {
                document.getElementById(names[py][px]).innerHTML = "??";
                copy[py][px] = 3;
            }
            if (copy[py - 1][px] == 2) {
                document.getElementById(names[py - 1][px]).innerHTML = "??";
                copy[py - 1][px] = 4;
            }
            else if (copy[py - 1][px] == 5) {
                document.getElementById(names[py - 1][px]).innerHTML = "??";
                copy[py - 1][px] = 6;
            }
            if (copy[py - 2][px] == 0) {
                document.getElementById(names[py - 2][px]).innerHTML = "??";
                copy[py - 2][px] = 2;
            }
            else if (copy[py - 2][px] == 3) {
                document.getElementById(names[py - 2][px]).innerHTML = "??";
                copy[py - 2][px] = 5;
            }
            py--;
        }
    }
    function down() {
        if (copy[py + 1][px] == 0 || copy[py + 1][px] == 3) {
            if (copy[py][px] == 4) {
                document.getElementById(names[py][px]).innerHTML = "";
                copy[py][px] = 0;
            }
            else if (copy[py][px] == 6) {
                document.getElementById(names[py][px]).innerHTML = "??";
                copy[py][px] = 3;
            }
            if (copy[py + 1][px] == 3) {
                document.getElementById(names[py + 1][px]).innerHTML = "??";
                copy[py + 1][px] = 6;
            }
            else if (copy[py + 1][px] == 0) {
                document.getElementById(names[py + 1][px]).innerHTML = "??";
                copy[py + 1][px] = 4;
            }
            py++;
        }
        else if ((copy[py + 1][px] == 2 || copy[py + 1][px] == 5) && (copy[py + 2][px] == 0 || copy[py + 2][px] == 3)) {
            if (copy[py][px] == 4) {
                document.getElementById(names[py][px]).innerHTML = "";
                copy[py][px] = 0;
            }
            else if (copy[py][px] == 6) {
                document.getElementById(names[py][px]).innerHTML = "??";
                copy[py][px] = 3;
            }
            if (copy[py + 1][px] == 2) {
                document.getElementById(names[py + 1][px]).innerHTML = "??";
                copy[py + 1][px] = 4;
            }
            else if (copy[py + 1][px] == 5) {
                document.getElementById(names[py + 1][px]).innerHTML = "??";
                copy[py + 1][px] = 6;
            }
            if (copy[py + 2][px] == 0) {
                document.getElementById(names[py + 2][px]).innerHTML = "??";
                copy[py + 2][px] = 2;
            }
            else if (copy[py + 2][px] == 3) {
                document.getElementById(names[py + 2][px]).innerHTML = "??";
                copy[py + 2][px] = 5;
            }
            py++;
        }
    }

以上就是HTML+JS實(shí)現(xiàn)經(jīng)典推箱子游戲的詳細(xì)內(nèi)容,更多關(guān)于JS推箱子游戲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用BootStrap的Carousel.js實(shí)現(xiàn)輪播圖動(dòng)畫效果

    利用BootStrap的Carousel.js實(shí)現(xiàn)輪播圖動(dòng)畫效果

    這篇文章主要介紹了利用BootStrap的Carousel.js實(shí)現(xiàn)輪播圖動(dòng)畫效果的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • javascript常用的設(shè)計(jì)模式

    javascript常用的設(shè)計(jì)模式

    本文主要介紹了javascript常用的設(shè)計(jì)模式:單例模式;工廠模式;適配模式;外觀模式。下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript監(jiān)聽文本框回車事件并過濾文本框空格的方法

    JavaScript監(jiān)聽文本框回車事件并過濾文本框空格的方法

    這篇文章主要介紹了JavaScript監(jiān)聽文本框回車事件并過濾文本框空格的方法,涉及javascript操作文本框獲取、清空及刪除空格的技巧,需要的朋友可以參考下
    2015-04-04
  • JS監(jiān)聽事件的疊加和移除功能

    JS監(jiān)聽事件的疊加和移除功能

    這篇文章主要介紹了JS監(jiān)聽事件的疊加和移除功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-11-11
  • js中常見的6種繼承方式總結(jié)

    js中常見的6種繼承方式總結(jié)

    js中的繼承與其說是對象的繼承,但更像是讓函數(shù)的功能和用法的復(fù)用,下面這篇文章主要給大家介紹了關(guān)于js中常見的6種繼承方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • JS獲取動(dòng)態(tài)添加元素的方法詳解

    JS獲取動(dòng)態(tài)添加元素的方法詳解

    這篇文章主要介紹了JS獲取動(dòng)態(tài)添加元素的方法,結(jié)合實(shí)例形式分析了js動(dòng)態(tài)添加DOM元素及獲取已添加的DOM元素相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 低代碼從0到1創(chuàng)建小程序項(xiàng)目詳解流程

    低代碼從0到1創(chuàng)建小程序項(xiàng)目詳解流程

    低代碼作為開發(fā)工具類的產(chǎn)品,需要有從0到1體系化的教程才可以,而且還得有教師進(jìn)行輔助。否則,學(xué)習(xí)低代碼是有難度的,入門很難。因?yàn)榇蠹伊?xí)慣了用代碼編程,一下子過度到可視化編程,有一個(gè)思路上的轉(zhuǎn)變
    2022-08-08
  • 在Typescript中如何使用for...in詳解

    在Typescript中如何使用for...in詳解

    這篇文章主要給大家介紹了關(guān)于在Typescript中如何使用for...in的相關(guān)資料,以及TypeScript中使用for...in遍歷對象屬性會(huì)報(bào)錯(cuò)的解決辦法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 利用JavaScript編寫一個(gè)簡單的1024小游戲

    利用JavaScript編寫一個(gè)簡單的1024小游戲

    在每年的10月24日,我們都會(huì)慶祝程序員節(jié),這是一個(gè)向所有辛勤工作、創(chuàng)造出無數(shù)令人驚嘆應(yīng)用和系統(tǒng)的程序員們致敬的日子,為了紀(jì)念這個(gè)特殊的日子,我們將通過編寫一個(gè)簡單的1024小游戲來向所有程序員們表示敬意,本文將詳細(xì)解釋如何使用JavaScript編寫這個(gè)小游戲
    2023-10-10
  • Javascript 鼠標(biāo)移動(dòng)上去 滑塊跟隨效果代碼分享

    Javascript 鼠標(biāo)移動(dòng)上去 滑塊跟隨效果代碼分享

    這篇文章主要介紹了Javascript 鼠標(biāo)移動(dòng)上去 滑塊跟隨效果代碼,有需要的朋友可以參考一下
    2013-11-11

最新評論