VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 638|回复: 5

[交流] 分享,学习历程,求大家在编程思路上多指导。。。

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-17 04:44:44 | 显示全部楼层 |阅读模式
本帖最后由 zmrghy 于 2021-12-17 19:33 编辑

分享,学习历程,求大家在编程思路上多指导。。。

中国象棋,终于可以走子了。。。
鼠标点到棋子时,增加了方框表示被选中。
不再自相残杀,增加了不能吃自己的棋功能。。。
没有棋规,还是可以随意走,只不能再自相残杀。。。

修改了,教学视频中几项。。。
1,去掉了main函数while(1)中的刷新显示,只留下了监控鼠标。鼠标不点中棋子,不再刷新显示。
      解决了棋子闪烁问题。。。
2,去掉了刷新显示中的清屏。视频教程中走棋后,原先位置棋不消失。是刷新显示时,没重新显示棋盘,
      只重新显示了棋子。和清屏没有关系。。。
3,去掉了防止闪烁函数。闪烁原因第一项已经解决。扬汤止沸不如釜底抽薪。。。。
4,修改了,判断鼠标是否点在了棋子上。。。代码简单,提高了准确度。。。

太可悲呀。。。
修改了,这点东西。。。
代码被改的,面目全非,惨不忍睹。
所有代码都在,同一文件中。。。
不能再修改下去了。。。
再修改下去,自己也看不懂了。。。

需要全面整改了,以下几点思路。希望大家多多指点。。。。
1.编写个头文件,把定义的功能函数都放进头文件里。来个眼不见心不烦。。。。
2.多写一些小功能函数,每个函数负责一个功能。功能多了牵涉太多,不方便调用。。。
3.把棋规分成多项。一项一项去判断。不要把棋规和实现走子功能写在同一函数。。。
4.走子是否合规,先检查共同项,再检查棋子属性分项。。比如
   ①落子处是否是同方,棋子。不可自相残杀。
   ②如果,完成走子,是否直接被“将军”,这样走还不如直接投降。。。。


分享,学习历程,求大家在编程思路上多指导。。。
分享,学习历程,求大家在编程思路上多指导。。。

分享,学习历程,求大家在编程思路上多指导。。。 ChineseChess.rar (2.03 KB, 下载次数: 1)

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分





上一篇:赋值的问题
下一篇:delete重复释放同一块内存报错要怎么修改呀(除了不用指针)#36课后小作业
98_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-17 16:44:00 | 显示全部楼层
学的不错啊。
07_avatar_middle
最佳答案
12 
在线会员 发表于 2021-12-17 17:29:18 | 显示全部楼层
这个象棋的规则,看你问了这么多天了,难道百度搜不到么?还是拿到规则不知道转换成程序表示?
车:只能横平竖直的移动和攻击
马:只能走日字格,且日字格中马所在的长边上紧挨着马的位置不允许有其他棋子
炮:移动时可以横平竖直的动作,攻击时只能隔一个棋子攻击对方棋子
相:只能走田字格,且田字格的中心位置不能有棋子。只能在本方阵地中移动。
士:只能在帅初始的那个田字格里动作,且只能走斜对角,一次只能移动一个
帅:只能在初始所在的那个田字格里移动,横平竖直,一次只能运动一格。帅的攻击方式有:在田字格内部,可以攻击自己的四邻域内的棋子;在田字格外部,若敌方帅与本方帅在同一列,且中间没有其他棋子阻挡,认为此时帅可以攻击到对方的将。当有棋子可以攻击到帅时,称为被将军,若帅无法躲避,则认为输。
兵:在己方阵地内,只能向前移动与攻击。在敌方阵地内,可以向前左右移动,无法向后运动。攻击距离为1,即可以攻击自己前左右三个位置的棋子。

加油,把这个规则用代码描述一下。

没有看你的代码,如果象棋底层是用二维数组表示棋盘的话,其实这个规则很简单。
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-17 19:20:20 | 显示全部楼层
freehawkzk 发表于 2021-12-17 17:29
这个象棋的规则,看你问了这么多天了,难道百度搜不到么?还是拿到规则不知道转换成程序表示?
车:只能横 ...

谢谢,回复
棋规,转化C代码。对于C入门水平者,是有点难度的。
棋盘是二维结构体数组。。。
X, Y判断棋子位置,是没问题的。

棋规呀,除了对正式比赛中长打(俗称循环棋)、超时……等等,违例不清楚以外。。。
对平时业余爱好下棋规则,不是知道得。。。
毕竟从小玩棋30多年了。虽然还是臭棋篓子。。。。棋规,还知道一些的。。。
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-17 19:35:27 | 显示全部楼层

多谢,入门水平,马马虎虎。。。。
07_avatar_middle
最佳答案
12 
在线会员 发表于 2021-12-20 09:36:23 | 显示全部楼层
zmrghy 发表于 2021-12-17 19:20
谢谢,回复
棋规,转化C代码。对于C入门水平者,是有点难度的。
棋盘是二维结构体数组。。。

知道象棋本身的下棋规则的话,再实现规则的话,多试一试还是可以搞出来的。

我觉得像超时违例等等比赛的规则,你可以考虑放后面再说,我感觉它和象棋本身的走棋规则不是一个东西。

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-24 22:53

Powered by CcTry.CoM

© 2009-2021 cctry.com

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