
今天向大家介绍一款使用Flash制作的有趣的小游戏:猜数字。这个游戏是许多PDA和手机上的必备游戏之一,深受大家的喜爱。
游戏规则:每次游戏开始前都会产生一个随机的四位数,你的任务就是根据游戏对你每次试探给出的反馈不断试探,力图用最少的试探次数猜出正确的答案。
在游戏界面的左下角可以输入四个数字,但是不能有重复的数。输入后按右边的确定按钮(这里是“GO”),游戏会对你的输入和程序产生的数进行判断,如果有n个数字的值正确且位置正确,会显示nA;如果有n个数字在四个随机数范围内,但是位置不对,则提示nB。如果最后提示为4A,则你的判断完全正确。
游戏演示如图1 所示:
图1
一、界面制作
1、首先在Flash中新建一个影片,将影片默认图层命名为bg,在第3帧插入关键帧,使用绘图工具绘制图2所示的游戏背景,并将图层延续到第20帧。

图2
2.在bg层上面插入图层input,在第3帧插入关键帧,使用矩形工具绘制一个带变框的正方形,并复制3个副本,按照图3所示的顺序排列好,作为游戏数字输入框的背景。

图3
3、在input上插入图层inputbox,在第3 帧插入关键帧,使用文本工具绘制四个文本框,大小和前面所绘矩形相同,在属性面板中设置为输入文本框,然后从左到右排列好,分别放置在四个正方形上面,并设置文本变量名为txt1到txt4,如图4所示:

图4
4、新建一个图层ab,在第3帧插入关键帧,在此层用来设置游戏对玩家输入数字的反馈信息。先用矩形工具绘制一个无填充色的矩形边框,然后使用文本工具在矩形框里绘制两个动态文本框,分别设置变量名为txta和txtb,然后分别在两个文本框右边输入字母A和B,如图5所示:

图5
5、再添加一个图层info,在第3帧插入关键帧,使用文本工具绘制七个动态文本,从上向下排列,分别设置其文本变量为t1到t7,用来显示每此游戏的所有提示记录,也就是每次有7次猜数的机会。然后再绘制一个动态文本框,放置在界面的最右面,设置其文本变量为txtwin,用来显示最后的正确答案,最后在舞台右下角制作一个确定按钮,每此输入完输入后,按下这个按钮就可以进行数字的判断,如图6所示:

图6
下面进入AS代码编写。
二、代码的编写
给确定按钮添加如下Action:
//下面代码的主要功能是:对玩家输入的数字和游戏产生的数字进行比较,从而得出*A*B的结论,即提示玩家几个数字猜对,几个猜错。
on (press) {
a = b=0; //初始化变量a,b的值为0,a,b分别代表了A和B的数量
if (txt1 == shu1) {
a++; //如果玩家输入的第1个数字和游戏产生的第1个数字相同,
//则A的数量增1
} else {
if (txt1 == shu2 or txt1 == shu3 or txt1 == shu4) {
b++;
}//否则和游戏产生的其它3个数字比较,如果和其中一个相同,B数量增1
}
if (txt2 == shu2) {
a++; //如果玩家输入的第2个数字和游戏产生的第2个数字相同,
//则A的数量增1
} else {
if (txt2 == shu1 or txt2 == shu3 or txt2 == shu4) {
b++;
}//否则和游戏产生的其它3个数字比较,如果和其中一个相同,B数量增1
}
if (txt3 == shu3) {
a++; //如果玩家输入的第3个数字和游戏产生的第3个数字相同,
//则A的数量增1
} else {
if (txt3 == shu1 or txt3 == shu2 or txt3 == shu4) {
b++;//否则和游戏产生的其它3个数字比较,如果和其中一个相同,B数量增1
}
}
if (txt4 == shu4) {
a++; //如果玩家输入的第4个数字和游戏产生的第4个数字相同,
//则A的数量增1
} else {
if (txt4 == shu1 or txt4 == shu2 or txt4 == shu3) {
b++;
}//否则,和游戏产生的其它3个数字比较,如果和其中一个相同,B的数量增1
}
if (txt1 == txt2 or txt1 == txt3 or txt1 == txt4) {
gotoAndPlay("dd");
}
if (txt2 == txt3 or txt2 == shu4) {
gotoAndPlay("dd");
}
if (txt3 == txt4) {
gotoAndPlay("dd");
//上面三个if语句对玩家输入的数字进行判断,如果4个数字之间有相同的数,跳到dd帧,警告玩家输入非法
} else {
if (a == 4) {
gotoAndPlay("win");
//如果此时判断a的值为4,也就是A的熟练达到4个,则玩家全部判断对了,跳到帧win显示胜利信息
} else {
txta = a;
txtb = b;
}//如果游戏没结束,既玩家没全部判断对,设置txta和txtb两个文本框的值为A和B的数量
c[n] = "第"+(n+1)+"次"+a+"A"+b+"B";
//设置游戏反馈字符串,提示当前的信息,其中n为变量
t1 = c[0];
//将c[n]中的变量替换为0,显示"第1次*A*B的信息",下面的代码作用相同
t2 = c[1];
t3 = c[2];
t4 = c[3];
t5 = c[4];
t6 = c[5];
t7 = c[6];
N++;
}
}
on (release) {
txt1 = txt2=txt3=txt4=""; //释放此按钮后,清空四个输入文本框,等待用户重新判断
if (n == 7 and a != 4) { //如果已经判断了7次,A的数量还没达到4,则游戏失败
gotoAndPlay("f");
}
}
[1] [2] 下一页