OpenHarmony分布式五子棋-使用Canvas组件 实现棋盘、棋子的绘制

news2024/11/24 14:51:12

介绍

五子棋是一款比较流行的棋类游戏,此游戏使用分布式数据管理功能开发完成的。

本示例使用Canvas组件 实现棋盘、棋子的绘制,使用分布式数据管理 实现两台设备间数据的同步。

本示例使用分布式设备管理能力接口@ohos.distributedDeviceManager。

分布式数据管理接口@ohos.data.distributedData。

效果预览

首页

20230724024159.png?origin_url=https%3A%2F%2Fimage-tt-private.toutiao.com%2Ftos-cn-i-6w9my0ksvp%2F049a421004b74aefa21a23abe21d3898~tplv-obj.image%3F_iz%3D115383%26amp%3Bc%3D811c9dc5%26amp%3Bfrom%3Dimage_upload%26amp%3Blk3s%3D72284de7%26amp%3Bpolicy%3DeyJ2bSI6MywidWlkIjoiNDY4ODMxMjUxNDY4NzYxIn0%253D%26amp%3Bx-orig-authkey%3D5a21e4afda5945d9a206a695e4c78a63%26amp%3Bx-orig-expires%3D2343116513%26amp%3Bx-orig-sign%3DhyYBFgMduiYXoe%252Be3rF%252BcWQt6eA%253D&pos_id=e5d0xKlo)

使用说明:

1.启动应用,同一个网络下两台设备都确认权限后,一台设备退出。点击右上角流转按钮,选择需要拉起的远程设备,点击后拉起远程设备,第一次拉起设备时,若未进行认证,输入认证码进行认证,认证成功后拉起远程设备。

2.游戏过程中,本地设备的用户可以重开,悔棋,远程设备无此功能。下子时,在棋盘某位置点击第一次时预下子,若确定下在该位置,继续点击该位置,若不确定,点击其他位置即可。若远程设备因特殊原因退出或者掉线,本地设备可重新拉起远程设备,拉起后,本地设备点击棋盘任意位置,数据会同步到远程设备,继续进行未完成的游戏。

工程目录

entry/src/main/ets/
|---pages
|   |---index.ets                           // 五子棋首页
|   |---DeviceDialog.ets                    // 选择设备模块
|   |---TitleBar.ets                        // 标题导航栏
|---model                                  
|   |---DistributedDataModel.ts             // 分布式数据模块
|   |---KvStoreModel.ts                     // KvStore数据模块
|   |---RemoteDeviceModel.ts                // 管理分布式设备模块
|---util                                    
|   |---GobangConst.ts                      // 定义游戏用到的初始值                                                          

具体实现

  • 管理分布式设备(节点)
    1、创建设备管理对象,并指定参数kvstore应用包deviceManager.createDeviceManager("ohos.samples.distributeddatagobang", (error, value) => {})
    2、获取可信设备列表"this.deviceManager.getTrustedDeviceListSync()"。
    3、监听设备状态"this.deviceManager.on('deviceStateChange', (data) => {})"。
  • 分布式数据管理
    1、页面初始化时获取此应用所需能力,引入@ohos.data.distributedData初始化分布式数据库,并使用kvstore.on对数据change进行监听,通过appstorge判断获取相应的key判断是否是分布式节点。
    2、如果是分布式节点,如果数据发生变化处理数据,使用this.kvManager.getKVStore()通过指定Options和storeId,创建并获取KVStore数据库。以及添加键值对到数据库this.kvStore.put(key, value) 
    3、页面通过kvStore对象进行增删改查会触发其他已连接设备的kvStore.on监听。
  • 游戏规则编写
    1、init()函数初始化游戏规则,通过canvas组件绘制棋盘背景和棋子,游戏状态为开始,共计回合为0,并生成棋盘。源码参考 2、触发onClick函数,每click一次,清除一次canvas,数组中添加当前棋子,重绘。 3、当在A盘,且步长是偶数,表示B下的棋子会在A盘显示,绘制确定好的棋子,例如:this.deviceFlag === 'A' && this.distributedData.step % 2 === 0; 4、当在B盘,且步长是奇数,表示A下的棋子会在B盘显示,绘制确定好的棋子,例如:this.deviceFlag === 'B' && this.distributedData.step % 2 !== 0; 5、如果A盘重开(isRestart=true),那B盘就要清空棋子;不重开(isRestart=false)时,B盘正常显示。

相关权限

允许不同设备间的数据交换:ohos.permission.DISTRIBUTED_DATASYNC

允许系统应用获取分布式设备的认证组网能力:ohos.permission.ACCESS_SERVICE_DM

依赖

不涉及。

约束与限制

1.本示例仅支持标准系统上运行,支持设备:RK3568。

2.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)。

3.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。

4.本示例需要使用@ohos.distributedDeviceManager系统权限的系统接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考替换指南 。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/Solutions/Game/DistributedDataGobang/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→《https.docs.qq.com

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

鸿蒙生态应用开发白皮书V2.0PDF:

获取完整版白皮书方式请点击→《https.docs.qq.com

在这里插入图片描述

鸿蒙 (Harmony OS)开发学习手册

一、入门必看

  1. 应用开发导读(ArkTS)
  2. .……

在这里插入图片描述


二、HarmonyOS 概念

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

在这里插入图片描述

三、如何快速入门?https.docs.qq.com

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. .……

在这里插入图片描述


四、开发基础知识

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. .……

在这里插入图片描述


五、基于ArkTS 开发

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 7.网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. .……

在这里插入图片描述


更多了解更多鸿蒙开发的相关知识可以参考:《https.docs.qq.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1561892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【stm32】USART编码部分--详细步骤

USART编码部分(文章最后附上源码) 如果看不懂步骤可以根据源码参考此篇文章就能轻而易举学会USART通信啦! 编码步骤 第一步 开启时钟 把需要用到的USART和GPIO的时钟打开 第二部 GPIO初始化 把TX配置成复用输出,RX配置成输入(上拉输入、浮空输入)。…

VMware虚拟机添加磁盘

在VMware中添加磁盘 (虚拟机关闭状态下执行) 然后选择默认一步一步点下去,最后创建好新磁盘 开启虚拟机,挂载磁盘 通过命令 lsblk -f 查看未挂载的新磁盘 lsblk -f 通过fdisk命令进行磁盘分区 # 1. 给硬盘/dev/sdb进行分区&am…

2024年04月数据库流行度最新排名

点击查看最新数据库流行度最新排名(每月更新) 2024年04月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

Qt6.6添加多媒体模块Multimedia报错问题

问题 QT包含多媒体模块Multimedia时提示未知的模块: error: Project ERROR: Unknown module(s) in QT: multimedia 在帮助文档中只可以找到QMediaPlayer类,但是点进去是空的,这是因为没有安装多媒体模块及对应的帮助文档。 解决 使用在线…

RTOS中临界区嵌套保护的实现原理(基于RT-Thread)

0 前言 什么是临界区(临界段)? 裸机编程中由于不涉及线程和线程切换,因此没有临界区这一个概念。在RTOS中由于存在线程切换等场景,便有了临界区这个概念。简单来说,临界区就是不允许被中断的代码区域。什么…

【操作系统】FCFS、SJF、HRRN、RR、EDF、LLF调度算法及python实现代码

文章目录 一、先来先服务调度算法(FCFS) 二、短作业优先调度算法(SJF) 三、高响应比优先调度算法(HRRN) 四、轮转调度算法(RR) 五、最早截至时间优先算法(EDF&#…

ES学习日记(七)-------Kibana安装和简易使用

前言 首先明确一点,Kibana是一个软件,不是插件。 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic stack 成员之一,设计用于和Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索,…

机器学习——卷积的变种

机器学习——卷积的变种 卷积神经网络(Convolutional Neural Networks, CNNs)是深度学习领域中最重要的技术之一,它在图像处理、语音识别、自然语言处理等领域取得了巨大成功。在CNN中,卷积层是最核心的组成部分之一,…

Java与Go的并发世界:理解Work Sharing与Work Stealing

概述 最近在理解Golang中的Per P概念,于是我就去Go的源码中挖呀挖,结果挖到了Go的调度器设计。 Golang的调度器设计文档提到了Go中的P(OS线程)调度器使用的是work-stealing调度算法论文。 论文中提到了两个多线程调度算法:work sharing和wor…

ETL工具-nifi干货系列 第六讲 处理器JoltTransformJSON

1、处理器作用 使用Jolt转换JSON数据为其他结构的JSON,成功的路由到success,失败的failure。处理JSON的实用程序不是基于流的,因此大型JSON文档转换可能会消耗大量内存。 Jolt:JSON 到 JSON 转换库,用 Java 编写,其中转换的 &qu…

自动驾驶---Motion Planning之轨迹Speed优化

1 背景 在之前的几篇文章中,不管是通过构建SL图《自动驾驶---Motion Planning之Path Boundary》,ST图《自动驾驶---Motion Planning之Speed Boundary》,又或者是构建SLT图《自动驾驶---Motion Planning之构建SLT Driving Corridor》&#xff…

vivado 配置存储器器件编程2

为双 QSPI (x8) 器件创建配置存储器文件 您可使用 write_cfgmem Tcl 命令来为双 QSPI (x8) 器件生成 .mcs 镜像。此命令会将配置数据自动拆分为 2 个独立 的 .mcs 文件。 注释 : 为 SPIx8 生成 .mcs 时指定的大小即为这 2 个四通道闪存器件的总大小。…

生产制造园区数字孪生3D大屏展示提升运营效益

在智慧园区的建设中,3D可视化管理平台成为必不可少的工具,数字孪生公司深圳华锐视点打造的智慧园区3D可视化综合管理平台,致力于将园区的人口、经济、应急服务等各项业务进行3D数字化、网络化处理,从而实现决策支持的优化和管理的…

前端二维码生成工具小程序:构建营销神器的技术解析

摘要: 随着数字化营销的不断深入,二维码作为一种快速、便捷的信息传递方式,已经广泛应用于各个领域。本文旨在探讨如何通过前端技术构建一个功能丰富、操作简便的二维码生成工具小程序,为企业和个人提供高效的营销支持。 一、引言…

【目标检测】YOLOv6 的网络结构,图解RepBlock重参数化

YOLOv6 是美团推出的,在这个版本里面,不再使用之前 YOLOv4 和 YOLOv5 的带 CSP 结构的 CSPDarknet-53 作为 backbone 了,而是在 RepVGG 的启发下,推出了新的 EfficientRep 作为 YOLOv6 的 backbone。 RepVGG 最重要的一点是&…

学透Spring Boot 003 —— Spring 和 Spring Boot 常用注解(附面试题和思维导图)

这是 学透 Spring Boot 专栏 的第三篇,欢迎关注我,与我一起学习和探讨 Spring Boot 相关知识,学透 Spring Boot。 从面试题说起 今天我们通过一道和Spring Boot有关的常见面试题入手。 面试题:说说 Spring Boot 中有哪些常用注解…

助力瓷砖生产智造,基于YOLOv5全系列参数【n/s/m/l/x】模型开发构建瓷砖生产制造场景下1280尺寸瓷砖表面瑕疵检测识别系统

砖生产环节一般经过原材料混合研磨、脱水、压胚、喷墨印花、淋釉、烧制、抛光,最后进行质量检测和包装。得益于产业自动化的发展,目前生产环节已基本实现无人化。而质量检测环节仍大量依赖人工完成。一般来说,一条产线需要配数名质检工&#…

Windows系统搭建TortoiseSVN客户端并实现无公网IP访问内网服务端

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

Mysql的基本命令

1 服务相关命令 命令描述systemctl status mysql查看MySQL服务的状态systemctl stop mysql停止MySQL服务systemctl start mysql启动MySQL服务systemctl restart mysql重启MySQL服务ps -ef | grep mysql查看mysql的进程mysql -uroot -hlocalhost -p123456登录MySQLhelp显示MySQ…

使用 Django 构建简单 Web 应用

当我们在使用Django构建Web应用时,通常将会涉及到多个步骤,从创建项目到编写视图、模板、模型,再到配置URL路由和静态文件,最后部署到服务器上。所以说如果有一个环节出了问题,都是非常棘手的,下面就是我们…