捉迷藏的运营大大们之[翻牌]剖析

简介: 在队长战场小包和队员Ylimhs的齐心协力下,捉迷藏的运营大大们的小游戏算是成功上线了,之前队长战场小包有对整个游戏的总体进行了一个大概的介绍和主要模块的展示,那今天由我来带大家看看,我们当初是如何设计翻牌模块的。

微信截图_20220531220337.png

前言


在队长战场小包和队员Ylimhs的齐心协力下,捉迷藏的运营大大们的小游戏算是成功上线了,之前队长战场小包有对整个游戏的总体进行了一个大概的介绍和主要模块的展示,那今天由我来带大家看看,我们当初是如何设计翻牌模块的。


一.游戏的设计思路


其实大家也看出来了,这个是扫雷的变种版,所以核心的设计思想还是再不触碰到'雷'的前提下,把事先设置好的所有运营'找出来',全部找到则代表赢得胜利,反之则失败。


二.游戏效果和体验地址


1)游戏效果


2)体验地址:

体验地址


三.主要剖析的点


1.如何实现鼠标点击后,小方块翻面及判断是否是'雷'


1)进入页面后会预先随机生成小方块并随机给这些小方块赋值,可能是某个运营也可能是'雷',如下图所显示的这么一个效果

微信截图_20220531220505.png


2)鼠标点击小方块后,小方块翻面,包含踩雷判断


3)AC代码:

function clickTile(tile) {
//当点击每个小方块的时候都会做如下判断
1.该方块是否已被点击,即已经翻面,显示数字或运营头像
2.该方块是否已被标记,即插上旗帜
  if (
    tile.classList.contains("tile--checked") ||
    tile.classList.contains("tile--flagged") ||
    tile.classList.contains("flipped")
  )
    return;
  tile.classList.add("flipped");
  let coordinate = tile.getAttribute("data-id");
  let isMine = tile.getAttribute("data-tile");
  if (isMine) {
    gameOver = true;
    //如果触碰到'雷'或者将所有运营找到则游戏结束,显示相应文案
    endGame(tile);
  } else {
    let num = tile.getAttribute("data-num");
    if (num != null) {
      tile.classList.add("tile--checked");
      tile.querySelectorAll(".face")[2].innerHTML = num;
      tile.querySelectorAll(".face")[2].style.color = numberColors[num - 1];
      setTimeout(() => {
        checkVictory();
      }, 100);
      return;
    }
    //
    checkTile(tile, coordinate);
  }
  tile.classList.add("tile--checked");
}
复制代码


四.在游戏的开发中遇到了哪些问题&解决方案


1)在初始3D效果化小方块时前期的效果渲染很慢,一卡一卡的,非常影响体验


解决方案:从动态的js方法改成css来渲染


2)翻转小方块时如果不控制速度有问题


解决方案:将翻转的速度控制在200左右


结束语


在这个小游戏的开发过程中遇到很多问题,因为不是经常写前端代码,对这些效果渲染什么的不是很得心应手,得亏有小包大佬引导还有队员Ylimhs的协助,不然游戏写出来会有很多样式和功能bug。另外,掘友们做的小游戏都很有意思,也希望这款小游戏你们也能喜欢,谢谢。

目录
相关文章
|
2月前
|
数据可视化 前端开发 JavaScript
【Echarts大屏】共享单车运营平台|可视化大屏
【Echarts大屏】共享单车运营平台|可视化大屏
|
5月前
|
监控 数据可视化 BI
一文了解瓴羊数据大屏能力|让数据可视,让价值可见
一文了解瓴羊数据大屏能力|让数据可视,让价值可见
115 0
|
5月前
|
算法 数据挖掘 双11
心相印携肖战开启双11户外营销,瓴羊数智助力高曝光多频次覆盖精准客群
心相印携肖战开启双11户外营销,瓴羊数智助力高曝光多频次覆盖精准客群
|
11月前
|
消息中间件 编解码 网络协议
聊聊 RocketMQ 网络通讯模块
RocketMQ 的网络通讯模块负责生产者、消费者与 Broker 之间的网络通信。 笔者学习 RocketMQ 也是从通讯模块源码开始的,并且从源码里汲取了很多营养。
37108 3
聊聊 RocketMQ 网络通讯模块
|
前端开发 数据可视化 大数据
|
XML 前端开发 数据格式
第五例:省市联动2| 学习笔记
快速学习第五例:省市联动2
第五例:省市联动2| 学习笔记
|
XML 前端开发 数据格式
第五例:省市联动2|快速学习
快速学习第五例:省市联动2
110 0
第五例:省市联动2|快速学习
|
XML 前端开发 数据格式
第五例:省市联动1|学习笔记
快速学习第五例:省市联动1
第五例:省市联动1|学习笔记
|
XML 前端开发 数据格式
第五例:省市联动1| 学习笔记
快速学习第五例:省市联动1
时间轴、物流信息。你根本不需要StepView
时间轴、物流信息。你根本不需要StepView
105 0
时间轴、物流信息。你根本不需要StepView