形式化软件开发技术------中国象棋的 RSL 语义描述 6/13/2022
电子中国象棋
作者:陈伟锋
1 问题(Problem)
提供两人对奕的电子中国象棋。
要求:
a.约束对奕双方按中国象棋的不同兵种的移动规则进行轮流走棋。
b.在走棋过程中能自动判断当前的一手棋是否是吃子若是则将被吃的棋子从棋盘上出去。
c.在走棋过程中能自动判断当前的一手棋是否是将对方的军。
d.提供死棋判断,即判断被将军方是否有可能在下一手解除被将军的状态,若不能则为
死棋。
e.记录棋手的每一手棋
2 问题域(Domain)
在一局棋中,每一个棋子分属于不同对奕方,即红方与黑方。每个棋子属于不同的兵种分
别为将军,卫士,宰相,战马,战车,炮手,士兵七种。每个兵种有自己在棋盘上的移动规则。走
棋过程中,对奕双方轮流移动自己的棋子,这过程中有单纯的移动棋子亦有吃子,还有将军等。走
棋一直进行到双方求和,或一方被将死为止。
2.1 棋子(CHESS)
中国象棋中共有 32 个棋子(Chess),每一方有对应相同的棋子 16 个,每个棋子属于某一对奕方
(Owner),有自己的称呼( Caption)以及所属兵种(Force)。最后还有自己在棋盘上的位置
(Position)。
2.2 棋子的位置与棋盘的坐标(POSITION&&COR)
一个未被吃的棋子在棋盘上总有一个位置与之对应,而棋盘上的一个位置对应为一个坐标 (简单
表示为英文字母:COR)。棋盘用坐标表示如下:
9
8
7
6
5
4
3
2
1
0
0 1 2 3 4 5 6 7 8
其中 y>4 的区域是黑方的区域,y<5 的是红方的区域。
RSL 作业
1