请教一个对战象棋,联机思路

客户端A 左下角 xy都是0。 客户端B 左下角 xy也是0吗???

象棋联机对弈 A玩家 和 B玩家 怎么做同步 。
比如:A玩家 xy=0 走到 x=0,y=1的位置 B玩家 棋盘上怎么处理

也不知道怎么问了。 可以明白我的意思吗?

谁来指导一下思路 :face_with_monocle: :innocent:

通过websocket进行网络通信来同步状态

可以使用Cocos Service提供的腾讯云MOGE对战框架,接入非常简单
并且有示例项目

当然如果你们有服务端程序员,或者自己写服务端程序也可以的
可以参考,我新上架的网络层框架enet
新鲜滚热辣,
并附带cocoscreator的demo
带服务端实现的一个网络聊天demo

如果是我的话,我会固定位置索引,(0,0)在两边都是指同一个位置,然后根据不同客户端来区分显示

一个棋盘不能有两个坐标系,你以先行红方左下角为原点,后行黑方就做坐标换算吧。

可以参考下国际象棋的棋谱是怎么记录的。

以前做棋牌房卡场的,默认自己都是1号位,后端发过来的座位号前端要进过位置转换处理。这里大致也是这个逻辑吧

很简单啊 客户端把棋盘渲染出来 每个放棋子的地方做一个透明的预制件节点 记录各自的xy坐标同时可以通过x+(每行个数)*y得到一个唯一id(这个id可以做事件分发的标志),还可以根据棋子类型把指定棋子显示出来(做残局) 还可以添加点击事件 移动棋子只要向服务端发送操作玩家id和棋子移动前后位置的id 服务端再把数据广播

做联机 棋盘数据后端生成 移动合法都是后端校验 前端拿到棋盘数据把棋子显示到对应的节点上就行了

后端处理棋盘生成,需要数据库吗? 分房间需要数据库吗? 每次查询数据库是不是有点不好呢。服务器不是很好的。
服务器校验,会不拖慢服务器速度呢?

我想的是 服务器只做房间分配和房间数据广播 其它的事情都由客户端处理。

现在想棋牌都在客户端 有一方掉线重连 又不能同步了

需要个基尔数据库 直接配excel或json表 后端读表 游戏匹配开始 把棋盘数据发前端渲染 校验可前端可后端 只是前端校验不可信 做残局也是配表 后期维护数据表就行 房间数据后端都要记录做重连

如果还想做掉线重连的话,最好信息还是放在服务端吧。另外不止是棋盘,要不要考虑下双方步数/时间同步的问题?

http://store.cocos.com/#/resources/detail/2342 可以参考下我这边基于腾讯云 MGOBE 的斗兽棋项目。

不能的,你应该看一下象棋位置的横纵说明“
现行的[记谱法]一般使用四个字来记录棋子的移动。
第一个字表示需要移动的棋子。
第二个字表示移动的棋子所在的直线编码(红黑方均为由己方底线从右向左数),红方用汉字,黑方用阿拉伯数字表示。当同一直线上有两个相同的棋子,则采用前、后来区别。如“后车平四”,“前马进7”
第三个字表示棋子移动的方向,横走用”平“,向对方底线前进用”进“,向己方底线后退用”退“。
第四个字分为两类:棋子在直线上进退时,表示棋子进退的步数;当棋子平走或斜走的时候,表示所到达直线的编号。
所以按道理来说你的坐标位置应该用右下角为1,1,开始使用,你记录棋谱的时候可以直接使用数字了。
至于ui位置的显示可以使用红黑旗帜标记的来区分应该显示在哪里的。

我之前也想写一个象棋游戏,我自己小学的时候发明的玩法,但是搞不定ai啊,标准玩法的ai我都搞不定,就更加没可能搞定特殊玩法的象棋了。祝你成功吧

你给我说晕了 我就做个简单的对战就行了 不要残局。
一开始我想的是坐标转换, 看别人也说转换。这个我能理解
你说的 我不明白 :sweat_smile:

json 读取写入是不是有点费服务器? 我直接用了个数组是不是好点呢? 不做残局
基尔数据库 不知道什么意思 百度一下也找到解释

炮2进4 就是指自己右边的炮往前走了4格,这个是象棋棋谱的记录方式,他同时也可以告诉你炮的前后位置变化了。总之你应该先准备一个logicqp逻辑棋盘里面放的是棋子的逻辑信息,所有的操作都是对这个logicqp进行操作,ui是对这个数组的实际展示。在logicqp里面的每一项就是这么信息:{x:1,y:1,qz:‘red-pao’,type:’’,}

明白你的意思了
可以记录原来的位置,又可以知道要去的位置
这个用来做悔棋 可以

鸡儿 你这已经不是基础差的问题了

联机我没做过,不过你的同步应该是指棋盘数据对两个玩家怎么实现及时更新是吧

思路 已经差不多了 正在实现中