ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 真正的工作表中国象棋

真正的工作表中国象棋

作者:绿色风 分类: 时间:2022-08-18 浏览:111
楼主
ryueifu
没使用任何窗体和控件,纯粹一个工作表,走棋规则完备的双人对战象棋.


 

仅仅用了一天时间做出的.

作者ryueifu

昨晚,我用一个小时,就写好 车马炮各个兵种的走法规则了
12:03:54
限定以下几个方面:
比如马 ,不能跳出棋盘外,不能吃自己的棋,鳖腿时不许走
倾城(107172400) 12:03:53

倾城(107172400) 12:04:12
群主何不帮我写一下
12:04:19
对于 象,规则和马完全一样
12:04:34
但是,需要附加一句,不许过河
12:05:15
士的规则,和马的前2条规则一样,需要附加一个,不许出 九宫
12:06:16
车的规则,和马的前2条规则一样,在一条直线上走,不能中途遇到对方的子,能吃,或者在前面停下来
12:06:42
炮,和车规则一样,但是分2个情况,一是移动炮,规则和车一模一样
12:07:05
二是,炮打对方的棋子,那么需要判断中间恰好夹着一个棋子
12:07:18
并且不能打自己的棋,不能打空
倾城(107172400) 12:07:21
人才啊
12:07:52
卒子的判断, 没有过河时候,往前可以移动一个单位格子
12:08:17
和马前2规则一样,不可去棋盘外面,不能窝里啃
12:08:44
过河后,卒子的目标位置行数,不能比起始位置行数小
12:09:01
也就是,卒子不可退却,但是可以左右摆
12:09:20
最后,是老将的 允许规则,
12:09:52
起始位置和终止位置,坐标差的平方和是1
天涯浪子(417149126) 12:10:08
只能在田字行走
12:10:13
(x1-x2)^2+(y1-y2)^2=1
12:10:25
上面这个欧几里得距离公式
12:10:33
=1的时候,是老将
12:10:47
(x1-x2)^2+(y1-y2)^2=2的时候是 士
12:11:05
(x1-x2)^2+(y1-y2)^2=5的时候是 马

12:11:16
(x1-x2)^2+(y1-y2)^2=8的时候是 象

12:11:33
=1的时候,是老将 或者是兵
12:11:58
另一个公式: (x1-x2)*(y1-y2)=0
12:12:17
这个公式成立的话,可以用于车,或者炮的判断
12:12:51
最后,必须考虑到老将的一个特例
12:13:03
就是2个将对面的时候,可以蹦出九宫
12:13:08
杀死对方
12:13:35
这时候,需要满足 (x1-x2)=0
12:13:48
也就是.2个老将的 列数是一样的情况下
12:14:00
中间不隔子,
12:14:25
vba写的话,就是worksheetfunction.CountA(rg)=2
12:14:53
这句的意思,可以排除中间隔子
12:15:29
其实,只要你把马的规则搞出,其他的复制粘贴
12:15:33
稍加修改即可
2楼
赖芳芳
好厉害,大师
3楼
ly88996
好厉害,大师,发出来分享一下
4楼
Eric__宇
怎么没有附件呢,分享一下呗

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap