本篇基于只懂用flash as2.0构建function的知识量实现
要求
- 13个阴离子和5个阳离子随机组成8*8的方阵,点击一个阴离子后点阳离子,判断他们不共存的话两个一起消失。
- 每次打开随机生成地图。
- 三分钟时间限制。
- 最后总结出本回合中点击消除的阴阳离子所生成的物质。
每次打开生成随机地图
新建mc,将阴离子分别放到mc的1-13帧,阳离子放到14-18帧。在最后一帧上写:
var r =random(19);
if(r<14){
var o = random(19);
gotoAndStop(o);
}
else{
gotoAndStop(r);
}
//阴离子的种类是阳离子的一倍多,所有在生成阴离子的条件多加一次判断,使最后结果是阳离子的概率大一些。
将mc复制64份依序放置在方阵内,这样每次开局将随机生成不同的组合。
获取方阵内所有mc的帧数
因为mc里阴阳离子都是按顺序放置,获取每个mc最后停留的帧数便可知道每个mc随机后的离子类型。并将其存储在一个数组中。用于之后游戏结束的判断依据。场景内mc的实例名为s1到s64。
function fengyin(){
for(var i1 = 1;i1<=64;i1++){
_root["s"+i1].enabled = false;
}
}
fengyin();
function jiefeng(){
for(var i1 = 1;i1<=64;i1++){
_root["s"+i1].enabled = true;
}
}
//构建函数fenyin并执行让运行中的按钮不可用,构建函数jiefeng到数据稳定后解封
var mco:Array = [];
function gogogo(){
for(var i = 1;i<=64;i++){
var ner = _root["s"+i]._currentframe
mco.push(ner);
}
trace(mco);
clearInterval(intervalID)
}
intervalID=setInterval(gogogo,3500);
//构建函数gogogo,获取每个框里元素既离子的编号,定时在3500毫秒后执行,把数据记录到数组mco中
function Gs(shuzi:Number){
geshu=0
for(i=0;i<mco.length;i++){
if(mco[i]==shuzi)
{
geshu++;}
}
return geshu
}
//________________________________________
var jishu:Array = [];
var bs:Array = [];
function gogogo1(){
for(e=0;e<18;e++){
var vc:Number = e+1;
jishu.push(Gs(vc));
bs.push(Gs(vc));
}
trace(jishu);
genxin();
jiefeng();
clearInterval(intervalID1)
}
intervalID1=setInterval(gogogo1,3800);
//构建函数Gs,返回数组mco中每个元素出现的次数,既是记录每个离子出现的次数按序列存到数组jishu中。
//函数定时在3800毫秒后,等数组mco获取到数据后执行一次。
因为mc开局后要经过13帧时间和最后判断跳转的时间,一开始获取数据并不是最后随机的结果。所以构建成函数,定时3.5s后执行,执行一次后关闭定时器。jiefeng,fengyin函数是为防止判断时点击造成数据错误。
把每个mc的所在帧数记录到mco数组后,构建一个函数Gs,用来返回输入的数字在数组mco中出现的次数,以此来获取方阵内每个离子出现的次数。将数据依次存在数组jishu中。
function xiaoshi(){
for(var i2 = 1;i2<=64;i2++){
_root["s"+i2]._visible = false;
}
_root.dp._visible = false;
_root.gezi._visible = false;
bjx();
mySound4.start(0,10)
_root.yanhuan1.yan1.play(1);
_root.yanhuan1.yan2.play(1);
jiangpai3.gotoAndPlay(2);
shibai1.text = "通关";
var mycolor =new Color(shibai1);
mycolor.setRGB(0xff0000);
djs1._visible = false;
_root.rt1._visible = true;
mc_yongshi.text = "用时:"+ yongshi + "s";
}
//构建函数xiaoshi,执行时可以让按钮和格子不可见
function jieshu1(){
if((jishu[13] == 0 &&jishu[17] == 0)|| (jishu[17]>0 &&(jishu[0]+jishu[4]+jishu[5]+jishu[7]+jishu[8]+jishu[9]+jishu[10]+jishu[11]+jishu[12]) == 0)||(jishu[13]>0 &&(jishu[0]+jishu[1]+jishu[6]+jishu[7]+jishu[8]+jishu[9]+jishu[10]+jishu[11]+jishu[12]) == 0)){
if((jishu[16] > 0 && jishu[4] ==0)||(jishu[4] > 0 && jishu[16] ==0)||(jishu[4] == 0 && jishu[16] ==0))