# DAYU200_Demo **Repository Path**: xjszzz9/dayu200_demo ## Basic Information - **Project Name**: DAYU200_Demo - **Description**: DAYU200_Demo - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 33 - **Created**: 2022-07-07 - **Last Updated**: 2022-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 写在前面的话 非常感谢51CTO OpenHarmony技术社区和润和软件推出“润和DAYU200体验官招募”活动,本人有幸成为第一批的体验官,能亲自感受OpenHarmony系统在富设备上的魅力,预祝润和DAYU200体验官活动圆满成功。 ## 背景 #### 我为什么想要做这样的一款小游戏呢? 最近孩子在一家思维方面的培训机构中带回了一个表格,表格上有随机的数字,0~25,老师要求孩子们需要用最快的速度连续的把字卡上的数字按顺序读出,越快越好,起初我以为是个游戏(请原谅我的知识缺失),还打趣的和孩子比赛,当然每次我都让着孩子,一页方格很快就结束了,我觉得很有意思,想上网下载一些,惊奇的发现这个方格游戏竟然是"最强"的专注力游戏,随后我用时间搜索关键字,想找下是否有类似的游戏APP,确实找到了很多,iOS系统、Android系统都支持,但发现这些APP都内嵌了很多的广告,在练习的过程中时不时的出现,这本身是一款专注力的游戏,在训练过程中不断的被打断,尤其对孩子不友好,最近正在学习OpenHarmony系统,想在此系统上先创建一个纯净版的专注力游戏--舒尔特方格。 啰七八嗦的一堆,好像没有提到什么是舒尔特方格。别急,往下看... ### 先看下游戏截图吧 ![0游戏截屏](./screenshots/device/0-游戏截屏.jpg) ![1游戏截屏](./screenshots/device/1-游戏截屏.jpg) ![2游戏截屏](./screenshots/device/2-游戏截屏.jpg) ![3游戏截屏](./screenshots/device/3-游戏截屏.jpg) ![4游戏截屏](./screenshots/device/4-游戏截屏.jpg) ![4-1游戏截屏](./screenshots/device/4-游戏截屏1.jpg) ![5游戏截屏](./screenshots/device/5-游戏截屏.jpg) ![6游戏截屏](./screenshots/device/6-游戏截屏.jpg) ![6-2游戏截屏](./screenshots/device/6-游戏截屏2.jpg) ![6-3游戏截屏](./screenshots/device/6-游戏截屏3.jpg) ![7游戏截屏](./screenshots/device/7-游戏截屏.jpg) ![8游戏截屏](./screenshots/device/8-游戏截屏.jpg) ![9游戏截屏](./screenshots/device/9-游戏截屏.jpg) ![10游戏截屏](./screenshots/device/10-游戏截屏.jpg) #### 游戏视频 [OpenHarmony 锻炼最强大脑-舒尔特方格游戏练习篇](https://ost.51cto.com/show/14351) [OpenHarmony 锻炼最强大脑-舒尔特方格游戏对战篇](https://ost.51cto.com/show/14352) 来了,来了,开始解释说明是舒尔特方格。 ### 什么是舒尔特方格呢? 【某度了一下】 “舒尔特方格”,据说是世界公认“最强”的专注力小游戏,每天让孩子玩上10分钟,专注力就能有很大的提升。 舒尔特方格最初是用于帮助飞行员提升专注力的一种训练方式,其基础形式属于九宫格的一种,格数的多少代表了等级的高低,格子内填写了1-25等数字,在训练时需要训练者按照1-25的顺序,指出并读出来,而用时越短,则则证明专注力越好。 ![什么是舒尔特方格](./screenshots/11-什么是舒尔特方格.png) 而发明这项专注力小游戏的人,是美国神经心理医生舒尔特,这套“舒尔特方格”主要是通过视觉、听觉、动觉进行训练,提高专注力的稳定性,后来因为这个小游戏的效果十分显著,玩法也比较简单,所以逐渐被应用到普通人身上。 ## 游戏介绍 ### 游戏目标        1、培养注意力的集中、分配、控制能力。        2、拓展视幅,提高视觉的稳定性、辨别力、定向搜索能力。  ### 游戏玩法  游戏设计了三种不同的难度类型,简单:3×3的方格,中等:4×4的方格,困难:5×5的方格,根据你选择的游戏难度,请用手指按1~x的顺序依次按下对应的数字按钮,同时大声读出来,当游戏完成时会记录时间,用时越短,表示你的注意力水平越高。 *注:“舒尔特方格”既可以是一种测量儿童专注力的工具,也可以作为锻炼儿童专注力的有效工具,当儿童专注力过差时,可从3×3表格练起,当儿童对于表格完全熟练之后,再逐渐对表格进行升级,依次进行 “4×4”、 “5×5”……方格的训练。为防止儿童对于方格过于熟练形成前测效应,每次玩时都应对数字进行打乱,重新随机编入表格。只要父母平时多注意孩子专注力的锻炼,孩子的专注力一定会有所提升。* ### 时间标准 根据方格数量的不同,时间的要求标准也不同,现在就5×5共25格的舒尔特方格挑战时间给出参考标准,如下: | 等级 | 优秀 | 良好 | 中等 | 及格 | | --- | --- | --- | --- | --- | |5~6岁 | 30秒内 | 30~40秒 | 40~48秒 | 55秒内 | | 7~11岁 | 26秒内 | 26~32秒 | 32~40秒 | 45秒内 | | 12~17岁 | 16秒内 | 16~18秒 | 19~23秒 | 24秒内 | | 18岁以上 | 12秒内 | 13~16秒 | 17~19秒 | 20秒内 | ## 项目开发 ### 游戏功能 1、游戏首页-闪屏页,界面显示预加载图片,1.5秒后跳转到登录页面; 2、游戏登录页面,用户名输入框,最大长度为10字符,用户名内容无类型限制,可以是数字、文本、符号等,点击确定进入游戏,登录页面只有首次需要输入,用户名确认后则直接进入游戏设置界面; 3、游戏设置界面,界面包含:游戏难度选择(简单、中等、困难、对战)、开始游戏,另外可以查看游戏榜单、游戏规则、舒尔特方格的基础知识,点击不同的按钮进入相对于的功能; 4、游戏主页,根据用户选择的难度,加载不同方格数的游戏,简单类型:3X3共9格,数字从1~9;中等类型:4X4共16格,数字从1~16;困难类型:5X5共25格,数字从1~25; 5、单独说明下对战类型模式,当一台设备选择了对战模式(为了方便描述,我们把当前的设备命名为:设备A)时界面弹窗显示当前局域网内的其他设备列表,用户可以选择其中一台设备进行认证,通过认证后,会拉起被连接设备(我们把被连接的设备命名为:设备B)的游戏界面,设备B可以选择游戏的难度,点击开始游戏,设备A和设备B同时进入游戏界面,在倒计时后用户可以进行对战; 6、游戏模式总体分为两类,练习(简单、中等、困难)、对战,在练习模式下,游戏结束可以查看当前练习的结果,包含:错误次数、当前用时、历史最佳。如果是对战模式,游戏结束后显示挑战用时、当前用时,挑战用时表示挑战者的用时,当前用时表示你在本次对战的用时,根据对战结果,用时少,提示:“恭喜你,赢得挑战!”、用时多,提示:“你输了,再接再厉!”; 7、游戏榜单页面,包含三种不同难度(简单、中等、困难)练习的记录,根据用时的升序排列,根据顺序排列; 8、游戏规则页,主要用户展示舒尔特方格游戏的规则和一些练习标准; 9、舒尔特方案页,简单的介绍舒尔特方格游戏。 ### 环境 * 开发板:DAYU200 * 系统版本:OpenHarmony 3.1 release * SDK版本:ohos-sdk 3.1.6.5, API 8 * 开发工具:DevEco Studio 3.0.0.900(For OpenHarmony) ### 项目目录 ![项目目录](./screenshots/12-项目目录.png) ### 使用到的容器与组件 * div * text * stack * block * divider * dialog * button * image-animator * image * textarea * swiper * list * list-item * label * input * tabs * tab-bar * tab-content **上述所列举的所有容器、组件都可以参看官方开发文档:** * [OpenHarmony 应用开发-UI开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/Readme-CN.md) * [基于JS扩展的类Web开发方式组件与容器开发指导文档](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-components-versions-0000001185761140) ### 关联技术 #### 分布式调度远程FA **说明**:OpenHarmony提供了分布式能力,能够实现在同一网络下对远程设备Ability的拉起。在本游戏中主要体现在游戏对战,用户启动对战模式,即开启分布式远程调度能力,可以拉起局域网内的已认证设备。 **相关技术说明文章可以参看** * [OpenHarmony分布式 启动远程设备的FA](https://ost.51cto.com/posts/11789) * OpenHarmony分布式调度启动远程FA[官方demo](https://gitee.com/openharmony/codelabs/tree/master/Distributed/RemoteStartFA) #### RDB **说明**:关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。 在游戏中主要运用在游戏练习的成绩存储,以及同步对战结果,根据对战成绩比较对战双方的成败。 **相关技术说明文章可以参看** * [关系型数据库的概述官方文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/database/database-relational-overview.md) * [关系型数据库开发指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/database/database-relational-guidelines.md) #### RPC RPC(Remote Procedure Call)机制用于实现跨进程通信,使用软总线驱动,用于跨设备跨进程通信。RPC通常采用客户端-服务器(Client-Server)模型,服务请求方(Client)可获取提供服务提供方(Server)的代理 (Proxy),并通过此代理读写数据来实现进程间的数据通信。通常,Server会先注册系统能力(System Ability)到系统能力管理者(System Ability Manager,缩写SAMgr)中,SAMgr负责管理这些SA并向Client提供相关的接口。Client要和某个具体的SA通信,必须先从SAMgr中获取该SA的代理,然后使用代理和SA通信。 在游戏中主要运用在对战模式下,对战时会有两台设备,分别为设备A和设备B,设备A发起对战启动设备B的游戏app,设备B被启动后,进入游戏设置界面时,通过RPC启动设备A的服务,在设备B上选择游戏模式(简单、中等、困难)后点击开始游戏时,通过RPC向设备A发送开始游戏的消息,设备A代理服务收到开始游戏的消息后,通过公共事件将开始游戏的消息(开始游戏、游戏模式)发送到游戏设置界面,根据消息开始游戏。 **相关技术说明文章可以参看** * [OpenHarmony ServiceAbility(二)远程服务](https://ost.51cto.com/posts/13428) * [IPC与RPC通信概述](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/connectivity/ipc-rpc-overview.md) * [IPC与RPC通信开发指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md) #### 公共广播 公共事件提供了应用程序向系统其他应用程序发布消息、接收来自系统或其他应用特定消息的能力。CES(Common Event Service, 即公共事件服务)为应用程序提供发布、订阅及退订公共事件的能力。 公共事件根据事件发送方不同可分为系统公共事件和自定义公共事件。 * 系统公共事件:系统将收集到的事件信息,根据系统策略发送给订阅该事件的用户程序。 * 公共事件包括:终端设备用户可感知的亮灭屏事件,以及系统关键服务发布的系统事件(例如:USB插拔,网络连接,系统升级)等。自定义公共事件:由应用自身定义的期望特定订阅者可以接收到的公共事件,这些公共事件往往与应用自身的业务逻辑相关。 在游戏中主要运用在对战模式下,确保两台设备同时进入游戏。 **相关技术说明文章可以参看** [公共事件与通知开发概述](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/notification/notification-brief.md) [公共事件开发指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/notification/common-event.md) ### 已知问题 #### 1、对战模式下,设备A启动设备B的游戏FA页面时出现设备A应用闪退或者设备 B应用闪退? **问题原因**:初步排查导致的原因有两个:第一个是系统内存问题;第二个是应用多实例问题,具体应用待排查。 **解决方案**:清除设备上运行的应用,重启游戏应用,重新发起挑战。 ### 展望 * 扩展游戏成绩数据的曲线图,直观的观察一段时间内专注力的提升情况; * 扩展截屏分享功能; * 扩展对战数据榜单查询; * 扩展舒尔特方格古诗版,增加游戏的趣味性和实用性,还能提升背诵水平 ![舒尔特方格古诗版](./screenshots/13-舒尔特方格古诗版.png) ### 问题与思考 开发过程中遇到了一些问题,一些比较复杂的问题已经提到issues,希望可以帮助到你在开发过程中闭坑,具体如下: * [关系型数据库分布式数据存储问题](https://gitee.com/openharmony/distributeddatamgr_appdatamgr/issues/I5EM4P?from=project-issue) * [【OpenHarmony-3.2.3.2】【分布式软总线】【RK3568】【必现】【RK和RK在调用接口writeString传输字符串大于35k时调用失败】](https://gitee.com/openharmony/communication_ipc/issues/I5DFM2?from=project-issue) * [【OpenHarmony-3.2.3.2】【分布式软总线】【RK3568】【必现】【RK和RK在调用接口writeRawData传输数据时,test端发送成功,server端readRawData读取数据为空】](https://gitee.com/openharmony/communication_ipc/issues/I5DKE5?from=project-issue) * [OpenHarmony3.1release 连接服务失败](https://gitee.com/openharmony/ability_ability_runtime/issues/I595XR) ### 感谢 再次感谢社区和润和软件对本次活动的大力支持,如果没有DAYU200富设备,开发内容可能会被限制,期待更好的富设备,OpenHarmony继续前进。