先组织整理下最为麻烦的部分
棋子的运行规则
包括有 车、马、相、仕、帅、炮、兵的合法落点
棋盘以及其布局
所有棋子落点判定均在switch语句中进行列举,根据鼠标按下时对应棋子的编码进行判断
合法落点判定规则包括
一.是否按照对应棋子的合法路线下棋
二.落点是否在棋盘范围内
总体需要使用的棋子运动方向。使用数组存储以便于随时调用
move:上,下,左,右四个方向的运动
nextmove:左上,右上,左下,右下四个斜方向的运动
housemove:用于马的规则判定。
1.帅/将 运行规则较为简便,只需要在田字格内进行上下左右四个方向移动
2.仕/士 在田字格中走斜线
3.相/象 需要在对应的半场内,以更大的田字型路线运行
需注意落点范围限制以及大范围“田”字中心不能存在棋子
4.马 需要用到开头提及的housemove数组中八个方向判断
思路:分为上下左右四个大方向,再将每个大方向按照中轴线分为两部分,分别判断每部分中的“日”字型路线是否被阻碍
四个大方向即为判断“日”字型路线是否受到阻碍,八个小方向1~8即为棋子合法落点
按照顺时针方向查找,未被阻碍方向即为合法落点
5.车 走直线直到碰到第一个棋子或底线
走直线方向判定:上下左右四个大方向
以向上为例
当碰触到第一个棋子时判断对应编码为己/异方进而决定是否为合法落点
6.炮 走直线部分可以与车共用,碰触到第一个棋子后需进行再次搜索
再进行上下左右四个方向搜索,直到碰触到第一个棋子
7.兵/卒 过河前仅向一个方向走,过河后无法后退