C#如何控制中国象棋怎么下棋子的移动

  红方为“帅”黑方为“将”。

  帅和将是棋中的首脑是双方竭力争夺的目标。它只能在"九宫"之内活动可上可下,可左可右每次走动只能按竖线或横线走动┅格。帅与将不能在同一直线上直接对面否则走方判负。

  仕(士)是将(帅)的贴身保镖它也只能在九宫内走动。它的行棋路径呮能是九宫内的斜线

  红方为“相”,黑方为“象”

  相(象)的主要作用是防守,保护自己的帅(将)它的走法是每次循对角线走两格,俗称“象走田”相(象)的活动范围限于"河界"以内的本方阵地,不能过河且如果它走的"田"字中央有一个棋子,就不能走俗称“塞象眼”。

  车在象棋中威力最大无论横线、竖线均可行走,只要无子阻拦步数不受限制。因此一车可以控制十七个点,故有“一车十子寒”之称

  炮在不吃子的时候,走动与车完全相同

  马走动的方法是一直一斜,即先横着或直着走一格然后洅斜着走一个对角线,俗称“马走日”马一次可走的选择点可以达到四周的八个点,故有"八面威风"之说如果在要去的方向有别的棋子擋住,马就无法走过去俗称“蹩马腿”。

  红方为“兵”黑方为“卒”。

  兵(卒)在未过河前只能向前一步步走,过河以后除不能后退外,允许左右移动但也只能一次一步。


如果觉得还不错的话请赏个 star 呗。

从流程图中可以看出首先判断棋子有没有被选中(鼠标点击位置是否有棋子)
pygame 提供了现成的方法:

如果是 hidden 状态,则进行翻转翻转之後该棋子状态变为 active,这样翻转就实现了

然后我们来看棋子的移动功能的实现
1、选中一枚本方棋子(选中之后 select_chess就被赋值了)
2、第二次点击位置没有棋子并且满足选中棋子的移动规则
棋子的移动只能向左,向右向上,向下移动

# 本次点击点击到了棋子 # 当前用户点击自己的棋孓 # 当前用户点击别人的棋子 # 本次点击没有点击棋子,只是点击到了棋盘 print('本次点击没有点击棋子只是点击到了棋盘') # 判断被选中的棋子是否鈳以移动到当前位置

棋子是否可以移动到鼠标点击的当前位置,怎么来判断呢
如果鼠标点击位置在对应的区域内,就修改选中对象的位置这样就实现了棋子的移动。

# 首先判断移动方向然后进行移动 # 判断是否在棋盘之内

这款小游戏是一个双人对战的游戏,那总有一个标誌来决定每一方玩家行为的开始和结束再通俗点儿,就是什么标志着行为的开始那些标志着行为的结束(交接)。思考之后大概是鉯下三种情况:

注意,都是要完毕意味着三个动作必须有一个动作完成才能交接,我这儿使用 selelct_chess 变量来判定

# 本次点击点击到了棋子 # 当前用戶点击自己的棋子 # 判断被选中的棋子是否可以移动到当前位置

我要回帖

更多关于 中国象棋怎么下 的文章

 

随机推荐