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

此处值得一提的是棋子应当具有价值,将帅无价,因为可以根据当前所有可行动方式判断“最佳”行动,并能同时预测下次对手的“最佳”行动,依次达到机器人选手的目的,遗憾目前并没有实现,要知道十几年前就有这种象棋人机对战

 

 

文章很简陋,因为没人看

要上班,但几乎感受不到财富的积累

先就这样吧

 

posted @ 2021-08-03 22:30  小龙的无所事事  阅读(134)  评论(0)    收藏  举报