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

来源:互联网 发布:董小飒淘宝店赚钱吗 编辑:程序博客网 时间:2024/06/06 23:16

- - - - - - - - - - - - - - - 触控未来的日子–Day 22- - - - - - - - - - - - - -

今天是个具有纪念意义的日子,五年前的今天我正式参加工作成为一名职场人士。五年后的今天,我又回归到学生身份。怀着无比坚定的决心,向一个新的行业进军。我要我的下一个五年比过去的这五年更精彩,充实。去年的七月是我过去的二十多年里最巅峰的一个月。我很庆信自己在这样年轻的时候就给自己的人生创造了一个难以逾越的记录,让我在接下来的日子里时刻有一个清晰的挑战目标,我喜欢挑战,关键是这一次我充满信心,而且我给自己准备了长久的战斗时间。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

感慨,励志的话适可而止。着眼于当下,辨别事情的轻重缓急才是关键。来到触控未来已经一个月了,第一阶段的学习伴随着今天的考试正式告以段落。欢哥明天就要去上海,下周就要换别的老师讲下一阶段的教学内容,希望欢哥一路顺风,早日归来。
说到今天的考试,我就想抽自己。还是老毛病,遇到模糊不清的知识点没有及时的深入理解,导致考试的时候遇到问题还是思路不清,出现错误。今天那个冒泡排序法,运用两层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循环来确定,生成指定个数的基准点,这个由关卡显示的数字来决定。

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

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

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

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

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

下周就要学习c++了,传说中的灵魂一样的语言,听说难度很大,光理论就要学习个把月,几乎占去了整个学习时间的三分之一,主意证明其重要,我得重视,重视重视。

0 0
原创粉丝点击