小程序开发定制【HTML小游戏】推箱子网页版(附完整源码)

小程序开发定制最近刚刚更新完了HTML,CSS小程序开发定制的万字总结,小程序开发定制有很多人已经学习完了文章,小程序开发定制感觉反馈还不错,今天,用HTML,CSS,JS小程序开发定制的知识编写了一个童年经典游戏 - ,小程序开发定制供学习参考。

文章目录


1. 效果展示

游戏主界面展示:

游戏界面展示:

2. 游戏介绍

经典的推箱子是一个非常古老游戏,甚至是80,90年代的回忆,目的是在训练你的逻辑思考能力。

在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

在移动箱子的过程中,是对你的思维能力的一个训练,今天这款推箱子正是童年的回忆,但是我们的目的是为了通过学习源码的形式,来学习前端开发的知识,熟练掌握HtML标签,和JS逻辑的知识。

这是一款最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动,来将箱子推到指定地点。记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。

推箱子游戏1981年由日本人今林宏行首创,是在1982年12月由Thinking Rabbit 公司首次发行,名“仓库番”。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。

推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为?

3. 游戏规则

我们的目标是把箱子移动到指定的地点,该地点标注为空,当我们顺利的把箱子移动的指定的位置时,标注为满。请你尽量不要把箱子推动到角落,那样,你将无法移动它。例如:

我们可以选择不同的关卡进行闯关,大家在学习的过程中也可以添加不同的关卡,这样达到熟练掌握常用标签和属性的目的。例如:

同时,当我们在游戏卡关的时候,还可以选择重新开始游戏,这样的设计非常的人性化:

4. 源码学习

博客中用到的图片和源码已经免费上传,欢迎下载学习:

部分HTML代码:

设置游戏页面布局,游戏中按钮及位置…

 <div class="menu" onclick="newgame()">开始新游戏</div>    <div class="menu" onclick="continuegame()">继续游戏</div>    <div class="menu" onclick="select()">选关</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)>下一关</div>    <div class="win" onclick=returnselect()>选择关卡</div>    <div class="win" onclick=back()>返回</div>    <div class="side" id="side1" onclick=continuegame()>重试</div>    <div class="side" id="side2" onclick=leave()>返回</div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

部分样式代码:

设置按钮的样式,页面的样式…

<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133

部分逻辑代码:

游戏整体的逻辑实现部分:

    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++;        }    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发