最新要闻
- 【世界聚看点】火狐浏览器国内最受欢迎的扩展出炉:ABP等神级工具没入围
- 真相令人大跌眼镜!研究称莫奈印象派画风实则是雾霾
- 焦点要闻:土耳其地震“震出”隐秘地层:覆盖地球的44%、颠覆板块运动
- 今日最新!女子应聘财务被要求给五六人煮饭 负责人:吃饭不方便 可以不煮
- 多色多款 杰克琼斯卫衣89元包邮:低至1.3折清仓
- 最新消息:realme 10 Pro可口可乐版发布:骁龙695 背壳logo爱了
- 【世界热闻】微信、微博全部断更!老干妈回应“退网”:经营一切正常
- 当前讯息:1TB版本太香了 真我GT Neo5供不应求 徐起:会加紧拧螺丝
- 焦点滚动:零添加:太太乐900ml*2瓶酱油最低26.4元
- 美少女手游《妮姬:胜利女神》即将推出PC版 推荐配置1650S
- 全球热讯:非油炸!吃欢天荞麦面皮10袋到手19.9元:麻酱、酸辣随便挑
- 世界今热点:ChatGPT版必应被华人小哥攻破:一句话“催眠”问出所有Prompt
- 世界热门:钙钛矿-硅光伏电池效率突破30%!可稳定工作30年
- 世界即时:公交车刹车提醒是2B请注意 当地回应:考虑不周将“改名”
- 环球热议:苹果忍不住反驳乔布斯女儿吐槽:iPhone 14比iPhone 13 Pro还要好
- 环球资讯:让地球“流浪”前 先来研究下这一个更现实的威胁
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界热头条丨基于声网互动白板实现一个多人数独游戏
本文作者是声网社区的开发者“tjss”。他基于Vue、声网的互动白板的代码模板,搭建出了一个支持多人互动的数独游戏。本文记录了他的实现过程,欢迎大家也可以尝试实现自己的小游戏或应用。
我基于声网互动白板的 SDK 与 Window Manager 开发了一个场景化窗口插件,实现了一个多人数独游戏。在游戏中,每个玩家进入白板房间,都能看到数独游戏插件,同时可以参与其中,与房间内的小伙伴一起完成数独解题。
前期准备
1、注册一个声网账号,并实名认证,以便在后台创建项目,获取开发时会用到的 Appid 和 Token
(相关资料图)
2、了解 Vue 开发的基础知识。
3、了解声网互动白板产品,一些基本的接口和功能,看官方文档就足够了:www.shengwang.cn/interactive-whiteboard/
4、搭建开发环境:
NodeJs 版本 16.0.0
@Vue/cli 4.5.1
VSCode 代码开发工具
开启和配置互动白板服务
首先我们需要一个实名认证的声网账号,进入控制台(console.agora.io),在声网控制台开启互动白板服务。
这里需要注意的是互动白板是作为服务而显示的,而控制台中只是显示项目列表,并没有直接显示服务。
这时候我们就先创建一个项目,然后点击“配置”进入到项目详情中,在里面的页面就可以看到服务内容了。
这时候找到互动白板服务,点击开启就行。因为我的已经开启了,所以显示的是配置按钮。
使用官网提供的代码模板
场景化窗口插件目前我们不需要从零开始建立的,声网提供了一个代码模板,基于此模板我们可以很轻松就能实现一个在互动白板上使用的插件。
模板地址:https://github.com/netless-io/community-app-template
当搭建好开发环境后,便可以下载模板代码了,通过 Git 或者下载 Zip 都行。
需要注意 README.md 中的开发环境配置:
1、在 .env 文件里配置白板房间 UUID 和 Token请将本目录下的 .env.example 文件复制一份,重命名为 .env 或 .env.local 后,在里面填写必须的白板配置信息。你可以在 Netless Workshop 申请专用的白板配置。
2、执行 npm install 安装依赖
3、执行 npm start 进行本地开发
项目结构
笔者是基于 Vue 版本的插件模板进行开发的,直接打开项目,修改 src 里的内容即可,基本上和 Vue 开发一致。如果是通过 Git 命令拉取的代码,需要切换分支为 Vue 分支。
项目结构如下:
playground 目录是基本不用修改的,我们实现的插件是在 src 目录中完成的。
index.ts 文件是我们插件的一些数据设置,比如插件名称。其他逻辑基本不用修改。
onst Sudoku: NetlessApp = { kind: "Sudoku", setup(context) { const box = context.getBox(); box.mountStyles(styles); const $content = document.createElement("div"); $content.className = "app-counter"; box.mountContent($content); const app = createApp(App).provide("context", context); app.mount($content); context.emitter.on("destroy", () => { app.unmount(); }); },};export default Sudoku;
数独游戏规则
数独网格由 9x9 个空格组成。玩家只能使用数字 1 到 9,每个 3×3 宫只能包含数字 1 到 9,每一列只能包含数字 1 到 9,每一行只能包含数字 1 到 9,每个 3×3 宫、每一列或每一行中的每个数字只能使用一次。当所有数独网格都填入正确的数字时,游戏结束。(摘自网上)
数据同步核心思路
1. 通过互动白板SDK提供的 createStorage 方法,初始化一个数独棋盘,并把数据存储起来,同时需要更新自己的 chessBoard。
const chessBoard = ref();const context = inject("context");const storage = context.createStorage("chessBoard", { chessBoard: ChessBoard.init() });chessBoard.value = deepCopy(storage.state.chessBoard)
2. 在 Vue 界面的 onMounted 回调函数中添加存储值的更新监听,这样玩家在填格子的时候广播了最新的格子数据,其他玩家就能收到更新的通知,然后重新渲染界面。
onMounted(() => { initAppData() storage.addStateChangedListener((diff) => { chessBoard.value = deepCopy(diff.chessBoard?.newValue) if (finish(chessBoard.value.gridItems)) { statistics(chessBoard.value.gridItems) finishTag.value = true } })});
3. 填格子的时候,通过 SDK 的 setState 方法去更新数独棋盘的数据。
if (e.data && e.data > 0) { grid.number = parseInt(e.data) grid.userId = uid.value grid.color = rgb } else { grid.number = 0 grid.userId = "" grid.color = new Rgb(233, 233, 233) } storage.setState({ chessBoard: chessBoard.value })
数独游戏界面
笔者是优先实现这个互动游戏的核心功能,所以设计出的游戏界面比较简陋。
数独的数据结构
export class ChessBoard { gridItems: GridItem[][]}
因为需要统计游戏结束后,各个玩家填写的个数,所以在更新格子数值的时候也记录一下是哪一位玩家填写了。default 字段表示该格子是自动生成的,不需要玩家填写了。
export class GridItem { number: number color: Rgb userId: string default: boolean}
运行项目
点击工具栏最下方的按钮,可以找到我们实现的插件icon,然后点击即可打开。
打开插件后,会初始化创建一个数独题目,并且通过 createStorage方法储存起来,所有进入房间的玩家都能拿到这个数据,后续数独的更新都会同步给玩家去修改。因为这个项目重点是学习一下插件开发与数据同步,所以游戏界面以及内容这些做的比较简单。
接下来就要打开多个网页并且输入 localhost:3000进入我们的互动白板房间了,因为模板的uid是随机生成的,也就表示有不同的玩家进入了。
别的玩家填写后,其他玩家是不能再填这个格子的,最后游戏结束的时候,会统计各个玩家所填对的数字并展示。
游戏结束
总结
通过官方提供的场景化插件模板,我们很容易实现一些好玩的互动场景的功能。在这个简单的项目中,由于时间仓促,还没来得及优化得更好,后续有时间的时候笔者再打磨一下。比如不同玩家填写的数字以不同的颜色区分,增加限时机制等等。感兴趣的朋友一起来开发一些好玩的实时互动功能吧~
-
当前最新:学习笔记——尚好房项目(配置ssm环境、测试ssm环境)
2023-02-10一、配置SSM环境1、添加日志文件在“shf-parent web-admin src main resources”下创建“logback xml”<?xmlve
来源: -
《Towards Cooperation in Sequential Prisoner’s Dilemmas: a Deep Multiagent Reinfo
致力于序贯囚徒困境中的合作:一种多智能体深度强化学习的方法总结主要是针对复杂的序贯囚徒困境的合作...
来源: 世界热头条丨基于声网互动白板实现一个多人数独游戏
当前最新:学习笔记——尚好房项目(配置ssm环境、测试ssm环境)
《Towards Cooperation in Sequential Prisoner’s Dilemmas: a Deep Multiagent Reinfo
世界滚动:R机器学习:重复抽样在机器学习模型建立过程中的地位理解
【世界聚看点】火狐浏览器国内最受欢迎的扩展出炉:ABP等神级工具没入围
真相令人大跌眼镜!研究称莫奈印象派画风实则是雾霾
焦点要闻:土耳其地震“震出”隐秘地层:覆盖地球的44%、颠覆板块运动
今日最新!女子应聘财务被要求给五六人煮饭 负责人:吃饭不方便 可以不煮
多色多款 杰克琼斯卫衣89元包邮:低至1.3折清仓
项目终于用上了低代码,才知道为什么真香了!
机器学习-PCA
天天热消息:kx00015-顺序表--用C语言实现:删除顺序表中元素值等于x的所有元素
精彩看点:批处理脚本教程_编程入门自学教程_菜鸟教程-免费教程分享
vuex相关笔记
最新消息:realme 10 Pro可口可乐版发布:骁龙695 背壳logo爱了
【世界热闻】微信、微博全部断更!老干妈回应“退网”:经营一切正常
当前讯息:1TB版本太香了 真我GT Neo5供不应求 徐起:会加紧拧螺丝
焦点滚动:零添加:太太乐900ml*2瓶酱油最低26.4元
美少女手游《妮姬:胜利女神》即将推出PC版 推荐配置1650S
【全球聚看点】C#教程_编程入门自学教程_菜鸟教程-免费教程分享
环球时讯:【网关开发】8.Openresty 网关自定义健康检查的设计与实现
每日焦点!【0基础学爬虫】爬虫基础之爬虫的基本介绍
记录--千万别让 console.log 上生产!用 Performance 和 Memory 告诉你为什么
省选集训2023年2月9日T2
全球热讯:非油炸!吃欢天荞麦面皮10袋到手19.9元:麻酱、酸辣随便挑
世界今热点:ChatGPT版必应被华人小哥攻破:一句话“催眠”问出所有Prompt
世界热门:钙钛矿-硅光伏电池效率突破30%!可稳定工作30年
世界即时:公交车刹车提醒是2B请注意 当地回应:考虑不周将“改名”
环球热议:苹果忍不住反驳乔布斯女儿吐槽:iPhone 14比iPhone 13 Pro还要好
Entity Framework 教程_编程入门自学教程_菜鸟教程-免费教程分享
全球热文:【Spring】Bean注册注解
【当前独家】算法学习笔记(17): 快速傅里叶变换(FFT)
世界要闻:化繁为简|AIRIOT智慧水务信息化建设解决方案
环球资讯:让地球“流浪”前 先来研究下这一个更现实的威胁
女子疑吃自热火锅去世:不排除急性中毒、家属索赔176万元
当前消息!最香的i9+RTX 4080游戏本!ROG枪神7超竞版仅需18999元起
全球热讯:泰国1月份纯电动车上牌量排行:比亚迪称王、国产车霸榜
GTX 1060落魄了?《原子之心》1080P高画质需GTX 1080
环球关注:一步一腳印的 iOS App 上架和更新流程
当前快看:学习笔记——尚好房项目(项目介绍、环境搭建、配置依赖关系)
[数据结构] 二叉树的层次遍历
全球实时:JVM sandbox 实现热修复示例
《流浪地球2》全球爆火背后!《三体》导演:中国科幻的内核是文化自信
神十五航天员首次出舱视频公布:和地球同框 绝美
每日速看!方向盘助力失灵、AEB抽风!车主:百年凯迪拉克毁于LYRIQ 绝望
速递!Android 14来了:提升续航和流畅度
《狂飙》片头被指抄袭 网友放对比照跟国外一电影太相似:背后公司被扒
环球资讯:剖析字节案例,火山引擎 A/B 测试 DataTester 如何“嵌入”技术研发流程
Docker安装使用Kafka
每日动态!机器学习-KNN
全球热点评!网民称《水浒》应从中小学课文中清除 毒害更多人:浙江官方回应了
24岁生日当天崩了!腾讯QQ回应:服务器挤爆了 现已恢复
【全球报资讯】酒剑仙拿狙蚌埠住了 《仙剑奇侠传》五位角色入驻《和平精英》
如何注册 ChatGPT ,OpenAI
每日头条!A/B测试教程_编程入门自学教程_菜鸟教程-免费教程分享
环球即时看!24亿巨制大片 《速度与激情10》开启预售 片长130分钟
天天热点!魅族20 Pro外观偷跑:矩阵三摄 纯白机身太吸睛
世界今日报丨年轻人别以赚钱为目标!张朝阳称别把考试太当回事:不一定非上好大学
天天即时:中国在土耳其建造电站强震中未受损:稳定保障救援电力供应
实时焦点:微软公布ChatGPT版Bing不到48小时:申请用户量已超百万
天天热推荐:01-数据结构与算法-目录索引
环球快消息!keycloak~再说session和token
学习笔记——redis集群(定义、集群连接、查看集群、节点分配方式、插槽、集群中录入值、查询集群中的值、故障恢复)
滴滴一面:order by 调优10倍,思路是啥?
投诉不断 极氪被爆出现大规模动力故障 官方回应:会升级
焦点讯息:昆虫学硕士因表演双节棍获得工作 2000万粉大V感慨:掌握一门手艺很重要
当前报道:手机QQ崩了:显示无网络 你消息接收正常吗?
【环球新要闻】Moment推出1.55X变形镜头:iPhone也能拍出电影级超宽照片
十八罗汉分别叫什么?十八罗汉排名及顺序
马前泼水指的是什么生肖?马前泼水这个故事是什么意思?
巴黎恋人的结局是什么?巴黎恋人演员表
手净欲摸杯是什么意思?手净欲摸杯的出处是哪里?
环球观点:Linux 命令大全:2万字实现Linux自由
20088乐队现在怎么样?20088乐队现在怎么样了?
milo显示器是什么牌子?milo显示器怎么样?
ec文件是什么的简称?ec文件怎么打开?
神舟笔记本如何下载安装软件?神舟笔记本如何下载驱动?
tplink路由器怎么设置端口映射?tplink路由器怎么重新设置密码?
冰箱电磁阀怎么判断好坏?冰箱电磁阀的颜色代表什么?
票房榜前10稳了!《流浪地球2》总票房突破35亿 官方公布月球美术设计
每日信息:丰田皇冠遭车主集体投诉:空调管短了 漏水漏风
腾讯严惩《和平精英》外挂 一大批玩家一觉醒来发现被封号10年
高速特斯拉自动驾驶 驾驶员座位上睡觉!网友:保险赔吗?
世界实时:女子应聘人事被要求身高1米63以上 追问HR被回怼:不自信就不用了解了
最新资讯:keycloak~JWT没有被持久化_是因为你对方法论理解不到位
快喝不起了!农夫山泉涨价:纯净水、矿泉水啥区别、到底哪个好?
天天微头条丨在ChatGPT眼里 未来的汽车竟长这模样
天天快报!ChatGPT引发失业恐慌?这20种工作要避开:含医生、快递员
天天新动态:果然“超级奶爸”!李想晒六口全家福:期待五胎到来
订单充足不愁卖 国产特斯拉Model Y入门版涨价:贵了2000
环球滚动:学习笔记——redis持久化之RDB、AOF
BigDecimal加减乘除运算整合工具类
天天新资讯:4年还完20万欠款!夫妻回应剪掉名下所有信用卡 告别卡奴引网友感叹
天天热文:Win11又出严重bug:Intel用户程序崩溃 AMD躲过一劫
世界热点!1600人失业 老牌互联网巨头雅虎裁员20%:离职补偿未定
世界讯息:开窍!iPhone 15摄像头终于要升级:苹果设计让人抓狂 背部凸起更严重
环球视讯!3499元爆火!真我GT Neo5 1T版抢购一空:2023年旗舰射门员
世界最资讯丨日本国产大飞机失败:三菱重工不服输 自研新一代战机
天天看点:读Java实战(第二版)笔记06_新的日期和时间API
世界时讯:NVIDIA发布GeForce 528.49驱动:首发支持史上最强移动显卡