根据昨天的计划,今天开始做下面的内容。
1.鼠标点击事件
2.点击坐标进行处理。(坐标转换)
3.判断选中的位置是否有效。
4.确定选中的棋子,设置棋子的状态和棋子所在坐标的状态。
5.判断移动是否有效
6.设置移动后棋子的状态和坐标的状态。
鼠标点击事件在View中进行。如何把棋子移动和坐标转换进行有效的解耦合是当前的问题。
我开始的想法是Move单独写成一个类,坐标转换单独写一个Common,当触发鼠标左键点击时间时候,调用Move类,Move类中通过坐标转换算法,计算出坐标,暂时先不考虑规则,只实现鼠标单机移动棋子。5和6暂时不考虑。
Move类跟Piece类中的Move方法有重叠,暂时先不使用Move类,使用move方法试试。
使用move方法的缺陷是不知道鼠标点击的坐标应该传给哪一类棋子,因为规则还没有指定,刚才想设计Move类是想用Move类做一个过渡,这样的话Move类起到的作用应该是当做规则来使用,用来协调调用哪一个棋子的move方法。这样的话那就把Move类改为Ruler类,后面的规则在里面添加。
经过排查,终于找到纠结的原因了,是因为自己在前面挖的一个大坑,在初始化棋子的时候,棋子的状态依然是用的Location结构体定义的,没有对棋子的状态进行保存,导致后面无法获得棋子的状态。
创建一个新的结构体Piece_State,用来记录棋子的状态;
struct Piece_State
{
int x = 0;
int y = 0;
int num = 0;//记录棋盘0-24序号
bool isSurvice = true;
bool isChose = false;
};
今天先到这了,代码不完善,先不放了