H5数独游戏开发——游戏通关及重玩
如何判断游戏是否通关?通关后如何重新开始游戏,让用户重玩?今天给大家详细介绍如何实现以上功能。先看一下数独游戏通关后的提示界面,截图如下:
首先,我们需要判断游戏是否通关,那么如何判断呢?有两个条件: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数独游戏开发——游戏通关及重玩相关推荐
- H5数独游戏开发——游戏中的事件处理
假设你正在玩一款角色扮演游戏(RPG),主角走进了一家店铺,你用鼠标点击店铺里管家,这时屏幕显示一个待售物品菜单,然后你可以选购你需要的物品.那么,你知道从你点击鼠标的那一刻起,游戏是怎样响应的吗?让 ...
- 1.15 从0开始学习Unity游戏开发--游戏UI
上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...
- Android游戏开发–游戏循环
游戏循环是每个游戏的心跳. 到目前为止,我们仅使用了非常简单的一种(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是while循环,该循环一直执行 ...
- android_Android游戏开发–游戏循环
android 游戏循环是每个游戏的心跳. 到目前为止,我们使用的是非常简单的游戏(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是while循环 ...
- android游戏开发_Android游戏开发–游戏循环
android游戏开发 游戏循环是每个游戏的心跳. 到目前为止,我们仅使用了非常简单的一种(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是whi ...
- 数独游戏开发——游戏主面板显示
上次给大家介绍了如何实现资源加载进度条,资源加载完毕后就会进入游戏主界面.我们接着来实现游戏的功能--显示游戏主面板. 目前我们的数独游戏在资源加载完毕后就没有后续动作了,即游戏画面一直停留在进度条显 ...
- 以太智云赋能游戏产业,打造长沙顶尖NFT游戏开发平台,实现边玩边赚
2017年,区块链游戏<加密猫>掀起了NFT潮流,NFT也正式进入了人们的视野,真正开始注意到其蕴含的巨大潜力. 时隔三年NFT再次火爆整个数字资产行业,Twitter公司首席执行官Jac ...
- 游戏运营全过程剖析,游戏开发,游戏运营,游戏推广问题分析
产品策划:一个好的idea至关重要,结合当时的社会环境,游戏开发水平,玩家喜好,市场需求等考虑.精美的画面,流畅的游戏节奏,情节,完善的游戏系统能让你的游戏立于不败之地. 产品开发:游戏主线框架定好后 ...
- Xcode与C++之游戏开发: 游戏对象
上一篇:Xcode与C++之游戏开发:Pong游戏 游戏对象 在前面的 Pong 游戏中,没有用不同的类去代表墙,球拍和球,仅仅使用了一个 Game 类.像 Pong 这种简单游戏当然没问题,但它不是 ...
最新文章
- Silverlight – Datagrid,Dataform数据验证和ValidationSummary
- Spring配置数据源(连接池)
- 小米开发出100W手机快充技术:实测逆天
- android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?
- delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)
- java 不指定大小接收
- java 解析 datatabe,在JAVA实现DataTable对象(一)
- iphone 控制 android手机,新潮来袭:苹果手机控制安卓手机
- 【转】汇编指令与机器码的相互转换
- Go jsonrpc
- 京瓷打印机m5521cdn_京瓷Kyocera ECOSYS M5521cdn 驱动
- Centos7.5安装MySQL5.7
- 亿道信息丨手持PDA丨三防加固手机丨高频RFID丨电商仓库高效管理
- 近十年量化交易领域最重要的十本参考书推荐!重要!
- <nav>导航标签 和div标签一样,块属性标签</nav> <main>内容区域,和section没有区别</main> <section>内容区域,和main没有区别</sect
- 为什么要停止过度使用置换重要性来寻找影响特征
- 多传感器融合定位六-惯性导航原理及误差分析
- 市场营销1:区块链+AI、市场营销与市场营销流程
- ATMEGA16读取DS18B20温度,1602显示,并用proteus仿真,成功。
- 第14周---温湿度传感器采集
热门文章
- 2021年Android面试心得,系列教学
- canvas学习笔记
- 无线射频专题《射频合规,2.4GHz WIFI频谱模板》
- 【蓝桥杯省赛真题2】Scratch射击螃蟹 少儿编程scratch蓝桥杯选拔赛真题讲解
- WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择
- Mysql查看数据库和表占用空间
- MxDraw云图平台(H5网页CAD) 2022.11.15更新
- CAD网页Web端显示开发为什么要以WebGIS的思路来开发?
- Win10锁屏之后设置自动关闭屏幕的时间
- 基于macos M1 python3.8的tensorflow安装(简单方便几步完成)