这是我第一次发表关于算法的贴子,
希望大家支持下
原理:判断用户点击的按扭的X或Y坐标是否与移动按扭相同,
并且移动按扭的X,Y坐标是否与用户点击按扭相邻.
拼图游戏有很多种,我说的这种是类似七巧板,
//当点击空白按扭的上下左右时就交换它们的位置
//数字可以改成相应的图片
我们首先找出可移动按扭(2,7,13,10)的规律:
(1). 2,7的X坐标与空白按扭的X坐标相同; 13,10的y坐标与空白按扭的y坐标相同.
当然我们知道,用户点击的按扭不可能与空白按扭的X,Y都相同.
因为只有点击空白按扭本身才这样.
所以x{2,7,3} || y{13,10,12}(两个关系满足一个就行.)
申明:所有按扭的宽高相等.
(2). 2或7的Y值等于空白按扭的Y值减去按扭的高或加上按扭的高.
13或10的X值等于空白按扭的X值减去按扭的宽或加上按扭的宽.
满足以上条件的有
{4,13,9,15,8,10,6,14,4,2,8,5,9,7,6,11}
(3) 可以看出,满足上面1,2条件的按扭有很多,
根据我们的需求知道只有1与2同时满足才是最终结果.
最后把1与2相交: (1)&&(2)
就只有{2,7,13,10}
这里我介绍的是如何判断用户点击的按扭是否处于空白按扭的上下左右
//就是说是否可以移动
先判断用户点击的按扭是否与空白按扭(可移动按扭)的X坐标或Y坐标相同.
如上图,满足的按扭有X{2,7,3} || y{13,10,12}
我们可以看出满足条件的按扭还不少吧.
下面继续
再判断空白按扭的Y,或X值加上或减去按扭的高,宽(每个按扭的高,宽一样)是否与用户点击的按扭的Y或X值相等.
如下图,满足的按扭有X{4,13,9,15,8,10,6,14} || y{4,2,8,5,9,7,6,11}
最后把两个条件相交,满足的就只有{2,7,10,13}了
也就是说只有用户点击的是这4个按扭才会执行移动
文字水平太差,
如果有兴趣,下面有上面的例子的源码
数字华容道
简单拼图
http://www.bc-cn.net/bbs/dispbbs.asp?boardID=8&ID=82973&page=3
原理就是上面的方法
[此贴子已经被作者于2006-8-16 7:39:56编辑过]