美诚资源网

菜鸟教程之javascript实现连连看游戏(功能实现)

admin 43

!DOCTYPEhtml

html

head

metacharset="UTF-8"

title/title

scripttype="text/css"/script

/head

body

!--bodybackground="img/"--

imgborder='0'src="img/"width='100%'height='100%'style='position:absolute;left:0px;top:0px;z-index:-1'

!--bgsoundsrc="BackMusic/"loop=00FFFF");

();

//******************************************************

//创建初级按钮,将初级按钮添加到悬浮父窗口中,并实现对应功能

//******************************************************

varButtonPrimary=newButton("btnPrm","","","",295,30,"80","30")

("初级");

("FF69B4");

();

(Intermediate);

//**********************************

functionIntermediate()

{

clear();//重置游戏

guanqiaDengji="中级";

click1=null;

click2=null;

GuoGrade=800;

Grade=0;

index=14;

RowValue=8;

ColValue=8;

time1=90;

setTimer();//计时器

("当前分数:"+Grade);

Update(RowValue,ColValue,index);

}

//******************************************************

//创建高级按钮,将高级按钮添加到悬浮父窗口中,并实现对应功能

//******************************************************

varButtonExpert=newButton("btnEp","","","",475,30,"80","30")

("高级");

("#C71585");

();

(Expert);

//**********************************

functionExpert()

{

clear();//重置游戏

guanqiaDengji="高级";

click1=null;

click2=null;

GuoGrade=1000;

Grade=0;

index=18;

RowValue=10;

ColValue=10;

time1=120;

setTimer();//计时器

("当前分数:"+Grade);

Update(RowValue,ColValue,index);

}

//******************************************************

//实例化倒计时显示框,将倒计时框添加到悬浮父窗口中,并实现对应功能

//******************************************************

vartimeShow1=newText("txtShow","剩余时间:"+time1+"s",180,30,"100","20");

("red");

();

//Timer=setInterval(setTimer,1000);

//实现倒计时功能

functionsetTimer()

{

Timer=setInterval(Time1,1000);

}

functionTime1()

{

time1--;

("剩余时间:"+time1+"s");

if(Grade=GuoGrade)

{

alert("*恭喜过关*");

clearInterval(Timer);

}

if(time1=0)

{

alert("很遗憾!未能通关");

clearInterval(Timer);

}

}

//******************************************************

//创建重置按钮,将重置按钮添加到悬浮父窗口中,并实现对应功能

//******************************************************

varButtonReset=newButton("btnSet","","","",560,30,"50","30")

("img/");

();

(ResetBtn);

functionResetBtn()

{

varrS=("请选择过关等级!");

if(rS=="初级")

{

Primary();

}

elseif(rS=="中级")

{

Intermediate();

}

elseif(rS=="高级")

{

Expert();

}

}

//******************************************************

//创建暂停按钮按钮,将暂停按钮添加到悬浮父窗口中,并实现对应功能

//******************************************************

varButtonStop=newButton("btnSet","","","",615,30,"50","30")

("img/");

();

(StopBtn);

functionStopBtn()

{

alert("当前暂停!是否继续?");

}

//******************************************************

//清空按钮数组(牌)

//******************************************************

functionclear()

{

for(vari=1;i=RowValue;i++)

{

for(varj=1;j=ColValue;j++)

{

BoardArray[i][j].removeToParent();

}

}

=0;//将存放按钮的数组长度初始化为0

clearInterval(Timer);

}

//******************************************************

//排布按钮显示,初始化连连看牌面

//******************************************************

functionUpdate(_RowValue,_ColValue,_index)

{

for(vari=1;i=_RowValue;i++)

{

//创建数组,存储按钮

BoardArray[i]=newArray();

for(varj=1;j=_ColValue;j++)

{

//产生随机数,表示牌的下标.随机数为小数,所以需要转换成整形

ImgIndex=((()*_index));

//实例化按钮对象

//BoardArray[i][j]=newButton(i+""+j,"",i,j,40*j+10,50*i+20,"30","40");

BoardArray[i][j]=newButton(i+""+j,"",i,j,60*j+10,60*i+20,"50","50");

//将按钮子对象添加到悬浮窗父对象中

BoardArray[i][j].addToParent();

//设置按钮中的背景图片,使图片在按钮中显示

BoardArray[i][j].setBackgroundImage(ImgArr[ImgIndex]);

BoardArray[i][j].setClick(Eliminate_1);

}

}

}

//******************************************************

//实现消除牌面的功能

//******************************************************

functionEliminate_1(obj)

{

if(click1==null)

{

click1=obj;

}

else

{

click2=obj;

if(()==())

{

//判断是否在同一行

if(()==())

{

//在同一行上,列相邻

if(()-()==1||()-()==1)

{

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

//消除一对加45分

Grade+=45;

("当前分数:"+Grade);

}

if(()-()1)

{

vari=0;

//从列小的牌的下一位置开始循环到列大的牌的前一位置

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

//如果循环到i==(),则证明中间不隔其他牌

if(i==())

{

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

//消除一对加45分

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

if(()-()1)

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

if(i==())

{

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

//消除一对加45分

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

//判断是否在同一列

elseif(()==())

{

//判断在同一列上,行是否相邻

if(()-()==1||()-()==1)

{

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

if(()-()1)

{

vari=0;

//从行小的牌的下一位置开始循环到行大的牌的前一位置

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

if(()-()1)

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!")

}

}

}

//***************************************************************

//消除不再同行同列的***一个拐角(两张牌之间只有两条连线)

//***************************************************************

if(()!=()()!=())

{

if(()-()=1)

{

if(()-()=1)

{

//判断角1是否为空(没有牌)——路径1

if(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[()][j].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

//判断角2是否为空(没有牌)——路径2

elseif(BoardArray[()][()].getHide()=="none")

{

alert("判断角2是否为空(没有牌)——路径2");

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[j][()].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

else

{

alert("不能消除!");

}

}

if(()-()=1)

{

//判断角1是否为空(没有牌)——路径1

if(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[j][()].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

//判断角2是否为空(没有牌)——路径2

elseif(BoardArray[()][()].getHide()=="none")

{

alert("//判断角2是否为空(没有牌)——路径2");

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[()][j].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

else

{

alert("不能消除!");

}

}

}

if(()-()=1)

{

if(()-()=1)

{

//角1为空(没有牌)——路径1

if(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[()][j].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

//角2为空(没有牌)——路径2

elseif(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[j][()].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

else

{

alert("不能消除!");

}

}

if(()-()=1)

{

//角1为空(没有牌)——路径1

if(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[()][i].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[j][()].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

//角2为空(没有牌)——路径2

elseif(BoardArray[()][()].getHide()=="none")

{

vari=0;

for(i=()+1;();i++)

{

if(BoardArray[i][()].getHide()!="none")

{

break;

}

}

if(i==())

{

varj=0;

for(j=()+1;();j++)

{

if(BoardArray[()][j].getHide()!="none")

{

break;

}

}

if(j==())

{

//调用setHide方法隐藏它们(消除了)

BoardArray[()][()].setHide(true);

BoardArray[()][()].setHide(true);

Grade+=45;

("当前分数:"+Grade);

}

else

{

alert("不能消除!");

}

}

}

else

{

alert("不能消除!");

}

}

}

}

//***************************************************************

//消除第三种情况的(两牌之间的连线有两个拐角),使用分类判断法,小的们,大王写不下去了,你们接上

//***************************************************************

//if()

//{}

}

click1=null;

click2=null;

}

}

//调用初始化牌面方法

Update();

/script

如果出现什么bug,请留言通知大王。谢谢。大王要去打妖怪了。