估计会用到foreach做嵌套循环或递归,在或者能用表链或二叉树等结构?
暂时没想出来
不过用笨方法可以实现
给每个pictureBox都编个号
还要给每个按钮也编上号
当pictureBox里有按钮里 编号=按钮的编号
按钮还要有另一个编号,记录所在行
int h,no = 10; //h=所在行,no=按钮编号
比如
建两个数组 int[] a = new a[7]; //第一行pictureBox
int[] b = new b[7]; //第二行pictureBox
用于索引行号
a[0] = 1; b[0] = 2;
button1在第二行索引4处
b[4] = 1; h = 2;
现在要移动button1,检查图中所标的pictureBox的编号
if (h == 1)
{
for (int i = 1; i < a.Length; i++)
{
if (a[i] == no)
{
//向左判断;移动
if (a[i-1] == 0)
{ //如果等于0说明左面没东西,移动,改a[i-1] = no; a[i] = 0 break; }
//向右判断;移动
if (a[i+1] == 0)
{ //同上 }
//向下判断;移动
if (b[i] == 0)
{ //同上}
}
}
}
if (h == 2)
//方法同上
比较麻烦,如果初始化时不知道控件的具体情况就不能这样做了...
[ 本帖最后由 afdoa83 于 2013-7-18 13:23 编辑 ]