冒泡排序巩固,拼图游戏逻辑

冒泡排序法所遇错误,运用两层for循环时思路不清,错误代码如下:

var a = [];
for(var i=1;i<a.length;i++){
    for(var j=1;i<a.length;i++){
        if(a[j]>a[j-1]){
            a[j] = a[j] + a[j-1]
            a[j-1] = a[j] - a[j-1]
            a[j] = a[j] - a[j-1]
        }
    }
}

错误在于i应该从0开始(或者<=a.length),因为外层for循环是要将每一个数字都取到,即遍历数组所有的元素,所以循环的次数应该是等于数组的长度。而第二层循环是要将每一个位置的数与它后面的每一个数对比,一旦发现比它大或者小的就通过交换变量值的方式交换位置,比较的对象的总数就是数组长度减1,因为不需要跟自己比。明白?明白?明白?不可以再错。

今天基本完成了拼图游戏,截止目前位置,还剩一个吸附功能没有实现,需要捉虫。关于碎片生成,点击,移动,提起,吸附等动作功能实现的原理,还需要再梳理清晰一点。

目前大致理解到的是:

生成碎片需要用到矩形模型,矩形的基本属性是(width,height,x,y)这四个属性确定后可以在平面生成一个矩形,坐标x,y的位置可以通过两层for循环来确定,生成指定个数的基准点,这个由关卡显示的数字来决定。

点击选中的原理,就是将鼠标在大图层上的坐标((点击)事件坐标)转化为碎片图层内的坐标,当这个坐标在矩形范围内时则判定选中,此时碎片可以跟随鼠标移动。

移动的原理,就是使图片的基准点坐标始终加上鼠标的偏移量,实现跟随移动。

吸附功能,首先需要确定碎片的归宿,也就是正确情况下它应该到达的目的地坐标。这个归宿在碎片生成的时候其实就已经确定,当碎片偏移动时就拿当前的坐标跟目的地坐标对比,设置一个偏移量来作为吸附功能启动的条件,即一旦碎当前坐标,与目的地坐标的距离小于等于偏移量时,则判定到达目的地,此时鼠标松开则启动吸附功能,一旦吸附成功则碎片不能再被移动。

当所有碎片全部移到正确位置,提示玩家胜利。

感觉上差不多,哈哈哈。
不过明天还是要将代码一句一句的搞清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值