连连看.

算法分析:
游戏规则:连连看是一个非常简单的游戏,就是在一个矩阵里找两个相同的方块,如果两个方块能够在不超过两次路径转弯下相连,就消去它们,消完为止.
游戏大致设计思路:

  • 主场景为一个矩阵,一般是用一个二维数组. 如果值为0,表示为空白;其它的值,每个值表示一种方块.
  • 由于此游戏是用鼠标操作,而行为也十分简单,就是点击第一个方块,再点击第二个方块,程序就根据两次点击判断是否可连.我们就可以把每次鼠标按下的那个方块写成一个类Target.这个类封装了它的信息:坐标,类型.然后还有一些针对它的方法,例如判断是否和其它Target类相连等.

  • 判断是否相连,或许是这个游戏的主要算法了.我用的是这种方法.
    Target类里放入一个Vector里面封装鼠标点击的这个点可以到达的所有点(Point类),当然还可以有和另一个点的转折点等,以便画两方块的连线.可以到达的点,就是从这个点开始按x,y相对于这个点向前和向后搜索,如果数组值为0,就向Vector加入这个点.点了第二次后,产生第二个Target类,同样,先找到它可以到达的所有的点,然后再执行它的 boolean canLine(Target tg)方法.
    当两个目标类都找到了这些点的时候,可以进行判断了:
    1.如果这两个目标是挨着的,返回true.
    2.如果这两个目标类有共同的可以到达的点(路线只转一次弯),返回true;
    3.如果两个目标类可以到达的点里,有两点可以以直线相连(路线转两次弯),记下这两点(它们就是转折点),返回true;

    大致算法就这样,具体可以看我的程序. 下载
    -------------------------------------------------
    今天我又发现一种新的算法,这种算法可能是通用的算法,就是当我们点第一个方块的时候,遍历数组,找出所有和这个方块一样的方块,然后再判断它们.这是我在Linux里的连连看里学到的.呵呵.因为它有这个功能.高兴啊.呵呵.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值