React TS 象棋 基础功能完成版 1.0, 未来大概率不会再更新
闲来无事做, 写写小象棋
本人思维逻辑性不强,想到哪儿说到哪儿。
目标:
1. 两方选手能够正常对弈
2. 棋子具有基本的行走规则
3. 具有一定的扩展性(这点比较抽象)
设计(与最终代码有不合之处,依代码为准,问就是懒得再更新图)
1. 游戏对象:
对弈即一场游戏,有这个对象后,控制游戏的输赢,选手的状态更新,对接棋局Bord与人Person两个对象
current 用于设置当前执棋手
character楚汉两个值将用于棋盘格子棋子的划分,为落棋提供逻辑支持

2. 棋盘,也可以叫棋局
本次实现使用React的组件作为展示元素,Bord以及Cell和Chess都有方法生成这样的组件
cellList即9 x 10的二维数组,这些格子组成了一个棋盘
changePosition处理有效的点击事件(举棋和落子), 即下棋的主要逻辑,在落子时应用该棋子的行动规则,传入棋盘现状,返回可落子位置,由此得出是否可以落子
每个格子都绑定点击事件不利于管理,因此在棋盘统一进行处理和分发

3. 棋格子
格子分地盘,比如象只能在自家走,兵卒得过界(兵卒这一点其实在代码中单纯依靠计算实现了)
格子改变状态依次更新classname,改变样式展示当前操作对象棋子,并在棋子被吃掉时销毁引用,达到删除棋子得目的
position将在构造函数中决定,也就是在Bord初始化得时候就定下来了

4.棋子
手动给每种棋子(兵车马炮士象帅)写展示文字,行动规则和角色character
此处值得一提的是棋子应当具有价值,将帅无价,因为可以根据当前所有可行动方式判断“最佳”行动,并能同时预测下次对手的“最佳”行动,依次达到机器人选手的目的,遗憾目前并没有实现,要知道十几年前就有这种象棋人机对战

文章很简陋,因为没人看
要上班,但几乎感受不到财富的积累
先就这样吧

浙公网安备 33010602011771号