快速业务通道

flash连连看自动寻道算法

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13


点击浏览该文件
点击浏览该文件
http://www.Flash8.net/bbs/UploadFile/2005-4/20054835139413.swf
以前一直在“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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号