首页 > 其他 > 详细

cocos creator 制作对战版中国象棋

时间:2021-04-27 22:12:27      阅读:36      评论:0      收藏:0      [点我收藏+]

1、搭建开发环境

  1、)客户端采用cocos creator 

  2、)服务器采用Node.js

2、制作前言

  1、因为是双人对战,对方的视角和自己的视角是不同的,虽然现实中棋盘只有一个,但是在手机上,每个人都是以自己的手机为主视角,所以需要进行坐标转换

  这里为了统一,确认红色方为先手,所以以红色方的棋盘为基础棋盘

  2、确定棋盘方向

  X轴和Y轴的确定:这个方向可以随个人喜好,但是在使用二维数组确定棋盘的时候,为了更加直观的展示棋子与数据的关系,

  个人写法: 以左上角为原点,X轴向下,Y轴向右

  数据存储采用二维数组

  example

    var layer = {

      {...},{...},...

    };

  这样写的目的就是 客户端点击的棋子转换为数据后传到server,server处理就可以直接使用,不用在意棋盘的转换。

  3、转换

  当红色方走棋时,直接校验红色方的落子逻辑,确定结果后,返回落子结果,红色方直接返回,黑色方转换后再返回。

  red->black原理

  在Server端,数据以红色棋盘为基础,所以红色方不需要转换

  但是对于黑色方来说,他的棋子坐标系和红色方是一样的,但是数据不同,例如红方选择(1-1)的棋子,在黑方棋子坐标(1-1)对应是hongfan的棋子,而实际上对应的是坐标(10-9)

  也就是红方选择自己右上角的一个棋子,在黑色这边是选择自己的右下角的棋子(参考系是上边设定的参考)

  换算公式

  black.x = (X轴的最大值+1) - red.x

  black.y = (Y轴的最大值+1) -red.y 

  当黑方走棋的时候,先换算成基础棋盘坐标(红方)

  4、棋子走法限制

     所有的走法都不能主动送将军

    1、(将/帅)

      1、保持X轴或者Y轴一致性(至少X轴相同或者Y轴相同)

      2、移动范围在棋盘之内

      3、田子格内移动,注意区别红黑的轴(根据参考系来定)

      4、移动路程中间和落子点无自己的棋子

    2、(士/仕)

      1、移动范围在棋盘之内

      2、区域限制(田子格内)

      3、移动后的X轴和Y轴必须是移动前的对角(左上,右上,左下,右下),偏移差为 1

      4、移动路程中间和落子点无自己的棋子

    3、(相/象)

      1、移动范围在棋盘之内

      2、移动后的X轴和Y轴必须是移动前的对角(左上,右上,左下,右下),偏移差为 2

      3、移动路程中间和落子点无自己的棋子

    4、(馬)

      1、移动范围在棋盘之内

      2、先确定行走方向,上下左右偏移 1,无棋子为方向可选,再判定落子方向,行走方向再偏移 1,取垂直的偏移为1的落子点(落子方向和行走方向垂直)

      3、落子点无自己的棋子

    5、(車)

      1、移动范围在棋盘之内

      2、保持X轴或者Y轴一致性(至少X轴相同或者Y轴相同)

      3、移动路程中间和落子点无自己的棋子

    6、(炮)

      1、移动范围在棋盘之内

      2、保持X轴或者Y轴一致性(至少X轴相同或者Y轴相同)

      3、以自己为中心同一方向轴的第二个棋子在非自己棋子的前提下可以落子

    7、(兵/卒)

      1、移动范围在棋盘之内

      2、没有过河之前,只能前进,过河之后,可以左右移动,和前进

      3、偏移量为1

   5、数据与界面设计

     1、客户端

      1,添加一层依赖节点(用来获取点击的准确位置)

      2,添加显示棋子节点(按需初始化,层级在依赖节点之下)

      3,保留数据

        var chessnode = {

          "typevalue":1,  //将士相馬車炮兵,每个自定义一个键值,代表他们的身份

          "type":1,    //红黑

          "isriver":false  //是否过河

        }

     2、服务器数据表示可以使用客户端的 chessnode

  6、生成每个子的落子点(吃棋点,非移动点,例如,炮可以移动到某个位置,但是不能吃子),

    落子前用来判定对方的落子,去除主动送将的行为,移动之后也要生成落子点,判定主动将军。

    (每次都要主动生成,本来想哪个棋子移动就更新哪个棋子的落子点,但是这里有依赖关系,比如蹩脚馬)

3、开发步骤

  1、客户端

    1、搭建界面

    

cocos creator 制作对战版中国象棋

原文:https://www.cnblogs.com/crhui/p/14710782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!