C#怎么控制中国象棋棋子的移动
C#如何控制中国象棋棋子的移动
就要毕业了,无奈运气不好,选了中国象棋编程这个题目,小弟本身编程能力很弱,而且C#以前就学了一个月,基本连入门都不是。象棋棋盘是用Graphics函数画的,当然借鉴了别人的源码,象棋棋子我用的是PictureBox控件,一个棋子用这么一个控件然后一一贴图,可能是最笨的一种方法了。但是现在贴好之后不知道如何控制这些棋子的移动,求大神指点

这是贴完图后的界面

棋子全部是用PictureBox控件完成的

运行生成后的
------解决思路----------------------
根据鼠标点击位置移动坐标,需要给每个类型的棋子指定移动规则。
------解决思路----------------------
http://blog.****.net/starfd/article/details/44850449
参考上面的图片拖动
------解决思路----------------------
你要先取每个网格的坐标,然后再用鼠标事件点击像棋后,再点那个网格的坐标,就把像棋的Location对应到那个网格的坐标上就可以了
------解决思路----------------------
你可以先选中一个棋子 ,也就是picturebox,然后再点击另一个节点,这时将选中的棋子移到另一个节点上,中间要考虑吃子等规则
------解决思路----------------------
不要改变图片。棋盘上应该叠加另外一个“手”的控件。
------解决思路----------------------
在
private void Rpao1_MouseDown(object sender, MouseEventArgs e) 中记录当前的鼠标位置
ax = e.X; ay = e.Y;
在
private void Rpao1_MouseMove(object sender, MouseEventArgs e) 中
if (e.Button == MouseButtons.Left)
{
Rpao1.Left = Rpao1.Left + (e.X - ax);
Rpao1.Top = Rpao1.Top + (e.Y - ay);
}
图片就跟着鼠标走了
------解决思路----------------------
把棋盘上的每个位置,首先固定好坐标,左上角是(0,0)
------解决思路----------------------
被将死的情况太多,太复杂
不可能用代码判断,应建立知识库,查表解决
就要毕业了,无奈运气不好,选了中国象棋编程这个题目,小弟本身编程能力很弱,而且C#以前就学了一个月,基本连入门都不是。象棋棋盘是用Graphics函数画的,当然借鉴了别人的源码,象棋棋子我用的是PictureBox控件,一个棋子用这么一个控件然后一一贴图,可能是最笨的一种方法了。但是现在贴好之后不知道如何控制这些棋子的移动,求大神指点
这是贴完图后的界面
棋子全部是用PictureBox控件完成的
运行生成后的
------解决思路----------------------
根据鼠标点击位置移动坐标,需要给每个类型的棋子指定移动规则。
------解决思路----------------------
http://blog.****.net/starfd/article/details/44850449
参考上面的图片拖动
------解决思路----------------------
你要先取每个网格的坐标,然后再用鼠标事件点击像棋后,再点那个网格的坐标,就把像棋的Location对应到那个网格的坐标上就可以了
------解决思路----------------------
你可以先选中一个棋子 ,也就是picturebox,然后再点击另一个节点,这时将选中的棋子移到另一个节点上,中间要考虑吃子等规则
------解决思路----------------------
不要改变图片。棋盘上应该叠加另外一个“手”的控件。
------解决思路----------------------
在
private void Rpao1_MouseDown(object sender, MouseEventArgs e) 中记录当前的鼠标位置
ax = e.X; ay = e.Y;
在
private void Rpao1_MouseMove(object sender, MouseEventArgs e) 中
if (e.Button == MouseButtons.Left)
{
Rpao1.Left = Rpao1.Left + (e.X - ax);
Rpao1.Top = Rpao1.Top + (e.Y - ay);
}
图片就跟着鼠标走了
------解决思路----------------------
把棋盘上的每个位置,首先固定好坐标,左上角是(0,0)
------解决思路----------------------
被将死的情况太多,太复杂
不可能用代码判断,应建立知识库,查表解决