鱼C论坛

 找回密码
 立即注册
查看: 4309|回复: 7

象棋的将军及死棋的判断,求思路

[复制链接]
发表于 2019-9-4 23:10:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
判断将军的方法
1.遍历本方棋子,看它下一步能不能走到对方将的位置
2.判断对方将的横竖两行是否有兵,炮,車等,和以将为中心的八个马位是否有马.以及这些棋子能否移动到将的位置
判断死棋
1.当本方被将军时,遍历本方所有棋子可能移动的位置,看能否应将(判断是否被将军)

判断将军还好,实现不太复杂.判断死棋时要判断的情况有点多(虽然大部分需要判断死棋时,棋盘内棋子都不多了),而且每次棋子移动后都要判断是否被将军,这样就很慢了
有没有更好的思路?让实现更简单一点.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-5 00:47:05 From FishC Mobile | 显示全部楼层
判断将军的话可以这样

给每个棋子类加一个属性,这个属性表示他们当前能到达的位置,比如车就是一行和一列,这样判断将军就变成了判断你的将和对方的棋子的能到达位置有没有交集

判断死棋的话可以这样

如果你被将军了,就把对方棋子一个一个假设拿走,如果有一个棋子被拿走可以解将军,那就判断一下这个棋子在不在己方的棋子到达范围,自己棋子能到的话就说明还没有将死
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 09:15:36 | 显示全部楼层
facevoid 发表于 2019-9-5 00:47
判断将军的话可以这样

给每个棋子类加一个属性,这个属性表示他们当前能到达的位置,比如车就是一行和一 ...

应将可以是逃将,垫将,吃子
你这个只是吃子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-5 09:29:10 From FishC Mobile | 显示全部楼层
是的,还有其他的可以解的情况
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-5 13:24:59 | 显示全部楼层
每个棋(可攻击的,车马炮兵)有特点的攻击范围或者说,攻击点,同时也是可移动点。一次只能移动一枚棋子,判断当前移动棋子的攻击点,有覆盖到将上面,说明此时属于将军状态。判断将剩余可以挪动的位置,是否被攻击点覆盖。如果不想遍历的话,可以事先把将的九宫格内,已经被覆盖的点做记录。具体实现看怎么走,写象棋,还不如写九宫格数独有趣
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 18:05:46 | 显示全部楼层
Stubborn 发表于 2019-9-5 13:24
每个棋(可攻击的,车马炮兵)有特点的攻击范围或者说,攻击点,同时也是可移动点。一次只能移动一枚棋子, ...

你所说的不太全面,举个例子:马后炮,当你移动马到炮前面时,马不能攻击到将,而炮可以.上面我就提到了不一定要移动将,也可以挡或者吃掉对方攻击的棋子.
要是把覆盖的点做记录,每走一步其覆盖的点都有可能变化,记录也就没啥用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 18:58:21 | 显示全部楼层
Stubborn 发表于 2019-9-5 13:24
每个棋(可攻击的,车马炮兵)有特点的攻击范围或者说,攻击点,同时也是可移动点。一次只能移动一枚棋子, ...


我已经写好了,你有时间的话可以看看.
有什么问题,或者我哪里写的不好,希望你能够提醒我
https://github.com/gavindst/chess
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 19:01:13 | 显示全部楼层
facevoid 发表于 2019-9-5 09:29
是的,还有其他的可以解的情况

我已经写好了,有时间看看
地址:
  1. https://github.com/gavindst/chess
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-10 12:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表