今天向大家介绍一款使用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"); } } 6、在第10帧插入空白关键帧,设置帧标签为dd,设置如图7所示的警告界面:
图7
给右下角的返回按钮 添加Action: on (release) { txt1 = txt2=txt3=txt4=txta=txtb=""; //设置输入文本框为空 gotoAndPlay("pd"); // 重新回到游戏状态 } 同时给此关键帧添加AS; stop(); 7、分别在15帧和20帧插入空白关键帧,设置游戏失败和胜利的提示画面,并设置帧标签分别为f(失败)和w(胜利),具体设置可以根据自己的意愿设置即可。最后给两帧都加上AS; stop(); 8、最后添加图层Action ,用来设置游戏的主As。 给第1帧 添加如下AS; shu1 = int(random(9)); shu2 = int(random(9)); shu3 = int(random(9)); shu4 = int(random(9)); //上面4句都是取0到9之间的随机数,每此游戏开始确保数字不重复 a=0;b=0; N=0; //定义并初始化3变量 给第2帧 添加如下AS; if (shu1==shu2 or shu1==shu3 or shu1==shu4) gotoAndPlay(1); if (shu2==shu3 or shu2==shu4) gotoAndPlay(1); if (shu3==shu4) gotoAndPlay(1); //上面的代码判断游戏产生的随机数是否有重复,如果重复,则返回到第1 帧//重新取数 给第3帧 添加如下AS,并且设置此帧标签为pd ; stop ();//游戏停在此帧,等待玩家输入数字 if (txt1==shu1) a=a+1; if (txt2==shu2) a=a+1; if (txt3==shu3) a++; if (txt4==shu4) a++; //上面代码的作用:如果输入的数分别和随机产生的数字每位都对应相同,则变//量a的值加1,这几句其实是用来确定游戏反馈信息*A*B中A的数量 c=new Array(7);//建立一个含有7个元素的数组对象 c[0]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=""; //对数组中的7个元素分别赋值为空 最后时间轴如图8所示;
图8
这样,一个趣味的小游戏就制作完成了,发布出来考考自己的智力吧。
源文件下载