如何判断游戏是否通关?通关后如何重新开始游戏,让用户重玩?今天给大家详细介绍如何实现以上功能。先看一下数独游戏通关后的提示界面,截图如下:

  首先,我们需要判断游戏是否通关,那么如何判断呢?有两个条件:1、数字面板已经全部填满;2、没有显示数字重复预警。游戏通关的流程如下:用户填入数字后,判断是否通关,如通关,则将计时暂停并将游戏状态改为5(表示通关),绘制场景函数将显示游戏通关及重玩提示对话框,用户点“重玩”按钮后游戏重新初始化。下面先看看通关判断函数的代码:

  用户填入数字后,判断是否通关,如通关则更改游戏状态值为5。接下来看看judgeWin()函数的代码

  judgeWin()函数判断是否通关,首先判断是否产生数字重复预警,接着判断数字面板是否全部填满,如没有预警且数字已填满则通关,否则未通关。resetGame()函数负责重新初始化数字面板中的固定数字,并重新计时。由于使用了新的游戏状态值5,所以绘制游戏场景的函数代码需要修改,修改后的代码如下:

  增加了游戏状态值为5时的处理代码,即显示游戏通关提示及重玩对话框。前面说过,游戏通关时会暂停计时,那么此功能是如何实现的呢?很简单,我们在计时函数中添加判断是否通关的代码,如通关则不计时。没听明白?没关系,看代码:

  在计时前,先判断游戏是否通关了,如已通关则返回,不计时;否则,以秒为单位计时(调用timeElapse()时传入的n值为1000,表示1000毫秒)。最后,说一说游戏通关及重玩提示对话框如何实现的,其实此对话框重用了上节课gxsDialog类的代码,只不过使用了不同的资源图片,首先就是游戏通关及重玩对话框的图片(需要修改资源类的待加载资源名称数组),代码如下:

  "pass.png"是通关及重玩对话框图片,"replay.png"是正常状态的重玩按钮图片,"replayd.png"是按下状态的重玩按钮图片。接着是通关及重玩对话框、重玩按钮的初始化代码:

var g_oReplay=new gxsButtonUI("replay");//重玩按钮

var g_oWinDialog=new gxsDialog("pass");//游戏通关及重玩对话框

  最后,如何实现游戏重新初始化数据及重玩的功能呢?我们可以在重玩按钮的事件响应回调函数中进行处理,这里我把此功能放在它的父类对话框中实现。为了能让按钮类调用对话框类的回调函数,给按钮类添加一个指向父类的成员变量pParent,代码如下:

  再给对话框类定义一个调用回调函数的函数,代码如下:

  正如你所见,我把回调函数放在控件初始化参数数组中,这样callFCB()与gxsDialog类实际绑定的对象无关。现在,还有一个问题,如何将gxsDialog类对象绑定给gxsButtonUI类?即在什么地方将gxsDialog类对象赋给gxsButtonUI类的pParent成员变量?看代码:

  在对话框的draw()函数中将gxsDialog对象实例赋给它的ButtonUI类子控件的pParent成员变量,这样就可以在按钮控件的事件回调函数中通过pParent调用对话框类的事件回调函数。最后,让我们看一看游戏通关及重玩对话框、重玩按钮的参数初始化代码:

  关键是g_oReplay.pParent.callFCB();这一行代码,它表示调用重玩按钮的父对话框(游戏通关及重玩对话框)的事件回调函数,下面,看看游戏通关及重玩对话框的初始化参数,代码如下:

  最关键的就是g_oGameData.resetGame()这条语句,其作用前面已经说了,重新初始化游戏,让用户重新玩。child:[15]表示子控件为“控件初始化数组中索引为15的控件”——即“重玩”按钮。最后,将今天的内容录了一个视频,文章未提到的地方可以参看视频。

H5数独游戏开发——游戏通关及重玩

  未完待续,敬请关注!后续更精彩,谢谢大家!

H5数独游戏开发——游戏通关及重玩相关推荐

  1. H5数独游戏开发——游戏中的事件处理

    假设你正在玩一款角色扮演游戏(RPG),主角走进了一家店铺,你用鼠标点击店铺里管家,这时屏幕显示一个待售物品菜单,然后你可以选购你需要的物品.那么,你知道从你点击鼠标的那一刻起,游戏是怎样响应的吗?让 ...

  2. 1.15 从0开始学习Unity游戏开发--游戏UI

    上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...

  3. Android游戏开发–游戏循环

    游戏循环是每个游戏的心跳. 到目前为止,我们仅使用了非常简单的一种(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是while循环,该循环一直执行 ...

  4. android_Android游戏开发–游戏循环

    android 游戏循环是每个游戏的心跳. 到目前为止,我们使用的是非常简单的游戏(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是while循环 ...

  5. android游戏开发_Android游戏开发–游戏循环

    android游戏开发 游戏循环是每个游戏的心跳. 到目前为止,我们仅使用了非常简单的一种(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是whi ...

  6. 数独游戏开发——游戏主面板显示

    上次给大家介绍了如何实现资源加载进度条,资源加载完毕后就会进入游戏主界面.我们接着来实现游戏的功能--显示游戏主面板. 目前我们的数独游戏在资源加载完毕后就没有后续动作了,即游戏画面一直停留在进度条显 ...

  7. 以太智云赋能游戏产业,打造长沙顶尖NFT游戏开发平台,实现边玩边赚

    2017年,区块链游戏<加密猫>掀起了NFT潮流,NFT也正式进入了人们的视野,真正开始注意到其蕴含的巨大潜力. 时隔三年NFT再次火爆整个数字资产行业,Twitter公司首席执行官Jac ...

  8. 游戏运营全过程剖析,游戏开发,游戏运营,游戏推广问题分析

    产品策划:一个好的idea至关重要,结合当时的社会环境,游戏开发水平,玩家喜好,市场需求等考虑.精美的画面,流畅的游戏节奏,情节,完善的游戏系统能让你的游戏立于不败之地. 产品开发:游戏主线框架定好后 ...

  9. Xcode与C++之游戏开发: 游戏对象

    上一篇:Xcode与C++之游戏开发:Pong游戏 游戏对象 在前面的 Pong 游戏中,没有用不同的类去代表墙,球拍和球,仅仅使用了一个 Game 类.像 Pong 这种简单游戏当然没问题,但它不是 ...

最新文章

  1. Silverlight – Datagrid,Dataform数据验证和ValidationSummary
  2. Spring配置数据源(连接池)
  3. 小米开发出100W手机快充技术:实测逆天
  4. android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?
  5. delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)
  6. java 不指定大小接收
  7. java 解析 datatabe,在JAVA实现DataTable对象(一)
  8. iphone 控制 android手机,新潮来袭:苹果手机控制安卓手机
  9. 【转】汇编指令与机器码的相互转换
  10. Go jsonrpc
  11. 京瓷打印机m5521cdn_京瓷Kyocera ECOSYS M5521cdn 驱动
  12. Centos7.5安装MySQL5.7
  13. 亿道信息丨手持PDA丨三防加固手机丨高频RFID丨电商仓库高效管理
  14. 近十年量化交易领域最重要的十本参考书推荐!重要!
  15. <nav>导航标签 和div标签一样,块属性标签</nav>    <main>内容区域,和section没有区别</main>    <section>内容区域,和main没有区别</sect
  16. 为什么要停止过度使用置换重要性来寻找影响特征
  17. 多传感器融合定位六-惯性导航原理及误差分析
  18. 市场营销1:区块链+AI、市场营销与市场营销流程
  19. ATMEGA16读取DS18B20温度,1602显示,并用proteus仿真,成功。
  20. 第14周---温湿度传感器采集

热门文章

  1. 2021年Android面试心得,系列教学
  2. canvas学习笔记
  3. 无线射频专题《射频合规,2.4GHz WIFI频谱模板》
  4. 【蓝桥杯省赛真题2】Scratch射击螃蟹 少儿编程scratch蓝桥杯选拔赛真题讲解
  5. WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择
  6. Mysql查看数据库和表占用空间
  7. MxDraw云图平台(H5网页CAD) 2022.11.15更新
  8. CAD网页Web端显示开发为什么要以WebGIS的思路来开发?
  9. Win10锁屏之后设置自动关闭屏幕的时间
  10. 基于macos M1 python3.8的tensorflow安装(简单方便几步完成)