flash连连看自动寻道算法
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-13
点击浏览该文件 点击浏览该文件 以前一直在“FLASH技术交流”区玩的,刚发现还有FLASH游戏区这个地方,! 光看第一页上就有几个关于FLASH连连看的帖子,看来大家对它很有兴趣,第一次来我就给大家一个见面礼吧。上面是我以前研究的连连看的自动寻道的算法。(本人美工不好,以上纯粹是对自动寻道算法的研究,不涉及美工,甚至我目前的这个游戏连结束条件也没有,也没有帮助和重新洗牌功能,因本人很懒,只想研究它的算法,(且现在又在研究另一个FLASH游戏)其他的也就不想去完善了,有兴趣的同仁可以在此基础上进行拓展、完善)上次在闪吧首页看到一个连连看,但是感觉执行速度超慢,怀疑它是不断循环检测每一个牌的状态,牺牲CPU的速度来实现寻道的,本人不推荐这种比较苯的办法,以下是所有源代码:(写代码的时候不觉得,写完了回头来看觉得真的有点恐怖啊!) onClipEvent (load) { _root.yb._alpha = 0; var zt = new Array(); var jilu1 = new Array(); var jilu2 = new Array(); var jilu3 = new Array(); var jilu4 = new Array(); b = 0; val = 1; for (i=0; i<12; i++) { for (j=0; j<12; j++) { a = attachMovie("ttt", "ttt"+val, val); a._x = j*32-50; a._y = i*32-80; a.onPress = pres; a.onRollOut = rele; a.n = val; zt[val] = 1; //初始为第一帧; val++; } } for (i=1; i<=12; i++) { tellTarget ("ttt"+i) { gotoAndStop(9); } zt[i] = 9; } for (i=133; i<=144; i++) { tellTarget ("ttt"+i) { gotoAndStop(9); } zt[i] = 9; } for (i=1; i<=133; i=i+12) { tellTarget ("ttt"+i) { gotoAndStop(9); } zt[i] = 9; } for (i=12; i<=144; i=i+12) { tellTarget ("ttt"+i) { gotoAndStop(9); } zt[i] = 9; } for (i=1; i<=137; i++) { if (zt[i] != 9) { ra = random(10)+1; zt[i] = ra; selectframe(ra); } } //列出矩阵; function pres() { t = this.n; if (b != 0) { _root.yb._alpha = 0; //c2=this._currentframe; first = b; second = this.n; ss=zt[second]; if(bb==ss){ //记录判断点类型; line1_x = getProperty("ttt"+first, _x); line1_y = getProperty("ttt"+first, _y); line2_x = getProperty("ttt"+second, _x); line2_y = getProperty("ttt"+second, _y); if (line1_x == line2_x) { line4 = "同一列"; _root.control.panduan_lie(); } else if (line1_y == line2_y) { _root.control.panduan_hang(); line4 = "同一行"; } else { _root.control.panduan_cuowei(); line4 = "错开位"; } } //判断两个点是否在同一列上; //c=this._currentframe; b = 0; } else { _root.yb._alpha = 50; _root.yb._x = this._x+546; _root.yb._y = this._y+5; b = this.n; bb=zt[b]; //this.gotoandstop(2); c = this._currentframe; } } function panduan_lie() { g = 1000; br = 0; //两点在同一列上的处理函数; if (math.abs(first-second) == 12) { _root.control.ok(); } else { //1 line1 = Math.floor(first/12); line2 = Math.floor(second/12); for (i=1; i<=12; i++) { jilu1[i] = line1*12+i; jilu2[i] = line2*12+i; } for (i=1; i<=12; i++) { //2 if (jilu1[i] != first) { if (zt[jilu1[i]] == 9 and zt[jilu2[i]] == 9) { l = jiance_lie1(jilu1[i], jilu2[i]); if (l |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 气体升腾,水花飞溅.火的原理下一篇: 飞机游戏(彩京类型《飞天站记》)
关于flash连连看自动寻道算法的所有评论