站内搜索

JAVA编写的拼图游戏移动算法,简单易懂

原帖及讨论:http://bbs.bccn.net/thread-84032-1-1.html

这是我第一次发表关于算法的贴子,
希望大家支持下



原理:判断用户点击的按扭的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://bbs.bccn.net/thread-82973-1-1.html

原理就是上面的方法

附,数字华容道代码:
点击下载该文件

 

  • 上一篇:Huffman编码生成程序
  • 下一篇:数据结构教程 第四十课 总复习