| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1803 人关注过本帖
标题:象棋算法问题
只看楼主 加入收藏
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
结帖率:75%
收藏
 问题点数:0 回复次数:2 
象棋算法问题
图片附件: 游客没有浏览图片的权限,请 登录注册


新手想用Qt制作一个中国象棋,现在卡在棋子走路的算法这里,请大家给我支支招。

1.图上1-90分别为象棋棋盘的90个坐标点
2.绿色数字 代表棋子“馬”
3.粉色数字 代表撇脚
4.蓝色数字 代表馬下一落点的所有可能坐标点

简单描述就是实现“馬走日”的算法,请大家帮我分析,利用1-90来实现此算法。

如果有更好的办法或思路也请赐教,谢谢!

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 算法 坐标 数字 分析 办法 
2018-10-13 00:53
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
收藏
得分:0 
已统计的结果如下:

馬下一步可以落子的坐标(馬=40)

40---21
40---23
40---33
40---51
40---59
40---57
40---47
40---29

结果:

string PointMa = "待移动棋子(馬)"; //PointMa  = 40

40---21 和 40---23 时, 40-21=19  40-23=17   
40---33 和 40---51 时, 40-33=7   40-51=-11
40---59 和 40---57 时, 40-59=-19   40-57=-17
40---47 和 40---29 时, 40-47=-7   40-29=11

可得知: PointMa  - 目的坐标值 = ±7 || ±11 || ±17 || ±19 时符合馬的落点

同时:

40---21 和 40---23 时, 40-21=19  40-23=17   
可得知: PointMa  - 目的坐标值 =  17 或  19 时,需要检测  PointMa - 9 处的撇脚

40---33 和 40---51 时, 40-33=7   40-51=-11
可得知: PointMa  - 目的坐标值 =   7 或 -11 时,需要检测  PointMa + 1 处的撇脚

40---59 和 40---57 时, 40-59=-19 40-57=-17
可得知: PointMa  - 目的坐标值 = -19 或 -17 时,需要检测  PointMa + 9 处的撇脚

40---47 和 40---29 时, 40-47=-7   40-29=11
可得知: PointMa  - 目的坐标值 =  -7 或  11 时,需要检测  PointMa - 1 处的撇脚


我用上述规律写了一份实现,勉强可以达到实现,但感觉很不合理,请大家帮我想一想更好的算法。


另外补充一个问题:
一直看前辈们说好好学习数据结构和算法的书,因为是自学的C++,在这方面没花什么时间。

我想问的是,这类书籍是不是对我现在的问题帮助很大?
2018-10-13 01:12
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
收藏
得分:0 
首次看到象棋算法吓死宝宝了,以为是完整的象棋算法。
2018-10-31 13:28
快速回复:象棋算法问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042343 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved