TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
程序运行图: 
版本 1.0
版权所有〔C〕1982-2005 Colinsoft。
作者: Nicholas Lin
QQ: 28501449
Mail: colinlin1982@sohu.com
本产品为 Colinsoft GameArcade 的一部分
GameArcade 为免费软件,欢迎使用。
Have fun!
本游戏在jdk1.5下编译运行!!!! 如在命令行启动: C:java>java nicholas.game.kyodai.MainFrame
界面很简单,关键在于上下左右预留一行(列)格子。
每次初始化和每消去一对的时候,都要自动找到一对可以消去的图片,否则就自动对局面进行洗牌。使用炸弹的时候消去的就是找到的这对。 寻找两个指定点之间的路径的算法比较复杂,基本的顺序是不转弯,转一次,转两次。前两个比较简单,最后一个要分上下左右四种情况分别找路径。简单说一下往下找的算法:
设起点坐标(sx,sy),终点坐标(ex,ey);
1。首先把原先存放的路径全部清空;
2。判断(sx,sy+1)是否为通路(无图片),如果有图片,此路不通,算法结束。
3。把(sx,sy+1)添加到路径;
4。如果(ex,sy+1)为通路且(sx,sy+1)到(ex,sy+1)为通路且(ex,sy+1)到(ex,ey)为通路
5。 路径找到,算法结束。
6。否则,sy++,返回第二步。
事实上有更快速的方法,但是实现起来麻烦。方法是先寻找四个点:
(sx,symax):从起点出发,能向下达到的最远点
(sx,symin):从起点出发,能向上达到的最远点
(ex,eymax):从终点出发,能向下达到的最远点
(ex,eymin):从终点出发,能向上达到的最远点
然后找出symin->symax和eymin->symax的公共部分,
如果公共部分存在,且存在y处于该公共部分,且(sx,y)到(ex,y)为通路,则路径找到。
否则,向上和向下都没有通路。
我用JAVA实现了第一种算法。
function TempSave(ElementID)
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
}
源码下载:http://file.javaxxz.com/2014/10/13/155740793.zip |
|