一、化学不共存离子点击消除案例as2.0——(多点对多点消消乐)

本文介绍了如何利用Flash AS2.0编写一款化学不共存离子消除游戏。游戏规则是随机生成8x8的离子方阵,玩家点击不共存的阴阳离子进行消除。游戏具有随机地图生成、三分钟时间限制和实时统计功能。通过获取方阵内MC的帧数判断离子类型,并实现动态倒计时。
摘要由CSDN通过智能技术生成

本篇基于只懂用flash as2.0构建function的知识量实现

要求

  1. 13个阴离子和5个阳离子随机组成8*8的方阵,点击一个阴离子后点阳离子,判断他们不共存的话两个一起消失。
  2. 每次打开随机生成地图。
  3. 三分钟时间限制。
  4. 最后总结出本回合中点击消除的阴阳离子所生成的物质。

每次打开生成随机地图

新建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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值