我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用CSS实现密室逃脱游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用CSS实现密室逃脱游戏

这篇文章主要介绍“怎么用CSS实现密室逃脱游戏”,在日常操作中,相信很多人在怎么用CSS实现密室逃脱游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS实现密室逃脱游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

“密室逃脱”这个词想必大家并不陌生,在以前的flash时代,这是一类很经典的益智游戏之一。玩家常常会被困在一间密室中,而过关的目的就是想法设法逃出这件密室。以下是笔者玩的最早的一个密室逃脱游戏;深红房间,它也可以说是密室逃脱类游戏的先祖。

怎么用CSS实现密室逃脱游戏

接下来,笔者要用纯CSS实现一款类似的密室逃脱类游戏。

是的,你没听错,纯CSS,也就意味着完全没有JS的参与。有人就纳闷了:WTF?CSS,一个网页布局的语言,居然还能写游戏?可惜的是,CSS还真能写游戏。接下来随笔者一起进入这个不思议的国度吧。

攻略

每次笔者玩密室逃脱游戏卡关时,总会去搜搜攻略,看完后就能把游戏玩通。因此当我们做密室逃脱类游戏时,首先要考虑的事情就是攻略。以下是笔者为本文密室逃脱游戏所制定的攻略

  •  左转,转动地球仪

  •  右转,发现一根锤子,点击捡起,记住墙上的数字

  •  左转,点击柜子,用锤子砸开它,获得一个圆盘

  •  点击墙上的壁画,壁画移开,看到一圆盘印,嵌入圆盘,获得一个usb

  •  右转2次,将usb插入电脑,电脑开启,输入墙上的密码,获得钥匙

  •  右转,用钥匙打开大门,游戏结束

开关

制定完攻略后,就要开始确定该游戏的核心所在——开关。说到开关,大家觉得HTML里的哪个元素最适合用来做开关?答案是单复选框。

说起单复选框,就不得不提这2个CP——label和兄弟选择符。label负责将该元素与其对应的复选框用for来关联起来,而兄弟选择符则负责与:checked伪类配合好,当某元素被勾选时,其相邻的元素就会受到它的影响。

首先,让我们来看一看一个简单的开关例子 

<input type="radio" id="globe" class="globe-trigger" />     <input type="radio" id="hammer" class="hammer-trigger" />     <label for="globe" class="globe">       <img class="lazy" data-src="https://i.loli.net/2020/10/25/YBnOQ2jVtSTmFkE.png" alt class="w-8" />     </label>    <label for="hammer" class="hammer">       <img class="lazy" data-src="https://i.loli.net/2020/10/25/KhVp4EaMoYrjlIC.png" alt class="w-6" />     </label>
.hammer {        display: none;      }      .globe-trigger:checked {       & ~ {          .globe {            pointer-events: none;          }          .hammer {            display: inline-block;          }        }      }      .hammer-trigger:checked {        & ~ {          .hammer {            transform: scale(0);            opacity: 0;          }        }      }

怎么用CSS实现密室逃脱游戏

可以看到我们用label元素包裹了对应的图片,并关联好了对应的开关。当用户点击地球仪globe时,globe-trigger开关就会被触发,这就是label的关联性

触发开关后,开关旁边对应的元素状态就发生了变化:globe变得无法被点击;hammer元素出现,这就是兄弟选择符的作用

同理,点击锤子hammer时,与其关联的hammer-trigger开关被触发,与此同时旁边的hammer就会消失,代表被用户“捡起”这一动作

理解开关的原理后,我们就可以把开关给隐藏起来啦

input[type="checkbox"],    input[type="radio"] {      display: none;    }

场景切换

假设我们游戏地图分为4块,且可以用导航箭头来切换。

游戏的地图其实是一张长图,如下图所示

怎么用CSS实现密室逃脱游戏 

<div class="camera">       <!-- 导航 -->       <input type="radio" id="nav-1" name="nav" class="nav-trigger-1" />       <input type="radio" id="nav-2" name="nav" class="nav-trigger-2" />       <input type="radio" id="nav-3" name="nav" class="nav-trigger-3" />       <input type="radio" id="nav-4" name="nav" class="nav-trigger-4" />       <!-- 长图 -->       <form class="stage">         <!-- 开关 -->         <input type="checkbox" id="globe" class="globe-trigger" />...         <!-- 场景 -->         <div class="scene scene-1">           <label for="...">...</label>           <nav class="navs">             <label for="nav-4" class="nav-left"></label>             <label for="nav-2" class="nav-right"></label>           </nav>         </div>       </form>     </div>

首先,设定游戏的固定视角,将多余的部分裁掉 

.camera {       --stage-width: 18rem;       --scene-id: 0;       position: relative;       width: var(--stage-width);       height: var(--stage-width);       overflow: hidden;     }

然后,设定导航,根据所选的导航来确定长图的平移距离 

@for $i from 1 through 4 {       .nav-trigger-#{$i}:checked {         & ~ .stage {           --scene-id: #{$i - 1};         }       }     }     .stage {       transform: translateY(calc(var(--stage-width) * var(--scene-id) * -1));     }     .scene {       position: relative;       width: var(--stage-width);       height: var(--stage-width);     }

比如在场景1,用户向右走,导航2被触发,长图将上平移一个单位,如下图所示

怎么用CSS实现密室逃脱游戏

这样就完成了场景切换这一效果

完成项目

此刻,我们已经具备完成密室逃脱游戏所必须的知识了。根据上面的攻略,一步步定制好所有开关,摆放好所有物件,且能确保场景能自由切换,这样一个纯CSS密室逃脱游戏就成功诞生啦

在线游玩地址:https://codepen.io/alphardex/full/GRqWRyB

怎么用CSS实现密室逃脱游戏

到此,关于“怎么用CSS实现密室逃脱游戏”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用CSS实现密室逃脱游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用HTML+CSS+JS实现猜数字游戏

这篇“怎么用HTML+CSS+JS实现猜数字游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用HTML+CSS+JS实
2023-06-29

怎么使用JS+CSS实现俄罗斯方块游戏

今天小编给大家分享一下怎么使用JS+CSS实现俄罗斯方块游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前提:要在网页上实
2023-07-05

HTML+CSS+JS怎么实现抓娃娃机游戏

这篇文章主要介绍“HTML+CSS+JS怎么实现抓娃娃机游戏”,在日常操作中,相信很多人在HTML+CSS+JS怎么实现抓娃娃机游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HTML+CSS+JS怎么实现
2023-06-30

怎么用C++实现跳跃游戏

这篇文章主要介绍“怎么用C++实现跳跃游戏”,在日常操作中,相信很多人在怎么用C++实现跳跃游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++实现跳跃游戏”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-20

怎么用java实现扫雷游戏

这篇文章主要介绍“怎么用java实现扫雷游戏”,在日常操作中,相信很多人在怎么用java实现扫雷游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用java实现扫雷游戏”的疑惑有所帮助!接下来,请跟着小编
2023-06-30

怎么用python实现flappy bird游戏

本篇内容介绍了“怎么用python实现flappy bird游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!程序大概流程:1.加载图片素材
2023-06-25

怎么用Python实现2048小游戏

这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P
2023-06-15

怎么用Python实现滑雪游戏

这篇文章主要介绍了怎么用Python实现滑雪游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python实现滑雪游戏文章都会有所收获,下面我们一起来看看吧。开发工具Python版本:3.6.4相关模块:
2023-06-27

怎么用Android实现拼图游戏

小编给大家分享一下怎么用Android实现拼图游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下源码package packageName;import android.os.Bundle;import and
2023-06-29

怎么用Shell实现猜数字游戏

本篇内容介绍了“怎么用Shell实现猜数字游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这篇文章主要为大家详细介绍了Shell实现猜数字
2023-06-05

怎么用Python Pygame实现赛车游戏

今天小编给大家分享一下怎么用Python Pygame实现赛车游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、环境安装
2023-06-29

怎么用Java实现三子棋游戏

本文小编为大家详细介绍“怎么用Java实现三子棋游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Java实现三子棋游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、题目要求编写程序,实现简单的三子棋
2023-06-30

怎么用JS实现贪吃蛇游戏

本文小编为大家详细介绍“怎么用JS实现贪吃蛇游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用JS实现贪吃蛇游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图:完整代码如下:html:
2023-07-02

怎么用C语言实现2048游戏

本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,
2023-06-20

怎么用java实现猜拳小游戏

本篇内容介绍了“怎么用java实现猜拳小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了java实现猜拳小游戏的具体代
2023-06-20

怎么用C++实现贪吃蛇游戏

这篇文章给大家分享的是有关怎么用C++实现贪吃蛇游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1976年,Gremlin平台推出了一款经典街机游戏Blockade。游戏中,两名玩家分别控制一个角色在屏幕上移动
2023-06-25

编程热搜

目录