1、图4-2设置影片属性(2)把“图层1”命名为“背景”,执行菜单栏“插入”|“新建元件”命令,新建一个图形元件,命名为“背景”,单击“确定”按钮,进入编辑区。单击工具箱中的“线条工具”按钮,在“属性”面板中设置大小为5.75px,格式为虚线,自制一个背景,如一个大的“井”字,如图4-3所示。回到场景中,在第16帧处按F5键插入相同帧。图4-3绘制一个背景(3)执行菜单栏“插入”|“新建元件”命令,新增两个图形元件,它们是游戏双方棋子的表示符号,分别命名为“圆圈”和“打叉”,通过工具箱中的“椭圆工具”按钮和“线条工具”按钮来完成,其大小及格式与步骤(2)中设置的相同,其绘制的效果如图4-4所示。图
2、4-4绘制双方的表示符号(4)按Ctrl+F8快捷键,新增一个影片剪辑,名称为“MC”这是制作产生“圆圈”或“打叉”的影片剪辑,在第2帧处按F6键插入关键帧,把“圆圈”元件从“库”面板中拖入编辑区。在第3帧插入关键帧,把第3帧中的“圆圈”元件删除后,将“打叉”元件从“库”面板中拖进编辑区,如图4-5所示。(5)单击返回到主场景,新增一图层并命名为“组件控制”,把MC影片剪辑分别放进“井”的9个位置,由于MC影片剪辑的第1帧没有图形,不会显示有图像,所以将场景1内的9个MC影片剪辑的实体命名为“ox1”,“ox2”,“ox3”,.,“ox9”,排列的顺序如图4-6所示。图4-5制作MC影片剪辑图
3、4-6MC的排列示意图(6)执行菜单栏“插入”|“新建元件”命令,新增一个按钮元件用来实现鼠标与场景的交互作用,名称为“button”,这个按钮没有图像,所以我们只在“点击”帧画上一个适当大小的矩形(104px82px),如图4-7所示。图4-7制作“点击”区(7)双击“库”面板中的MC影片剪辑,进入MC编辑区,把button按钮拉到第1帧处,返回场景1中,这时的主场景如图4-8所示。图4-8排列的MC场景4.1井字过三关(2)2智能命令的加入(1)接下来开始游戏的编程工作。首先进入MC影片剪辑的编辑页面,在时间轴上单击“插入图层”按钮新建一个图层,命名为stop层,在第1帧加入停止命令“st
4、op();”。(2)单击MC编辑区内的button按钮,并在“动作-按钮”面板中输入下面的语句:on(release)gotoAndStop(2);/当我方按下鼠标后,显示第2帧的“圆圈”图形set(_root.+_name,1);/记录这格已经被画了“圆圈”,告诉计算机不可把棋子放在这一格,通过set();(设置的参数)可以来完成,因为在变量名称中部分使用了其他的变量_name(名),所以用表达式(+_name,)来表示_root.winox1,_root.winox2,而这段语句描述的结果则会变成:_root.ox1=1,_root.ox2=1,.,这是Flash中表现“数组”最简单的方式
5、再用相同语法设定一阵式,用来记录我方下过哪些子:_root.win/如果_root.winox1=1、root.winox2=1、_root.winox3=1表示这3格都是圆圈,我们便胜利了,设定了一个+_name,这个数组可以表现为如下9个变量:_root.winox1_root.winox2_root.winox3_root.winox4_root.winox5_root.winox6_root.winox7_root.winox8_root.winox9胜利的条件是,任何一种图形组合连成一线。3个变数要是1,3个1的和即等于3,所以判断方式是,哪一种组合总和等于3。把判断式放进condi
6、tion中,用or连起来,因为只要其中一种成立便可以了,程序如下(即加入动作):if(Number(_root.winox1)+Number(_root.winox2)+Number(_root.winox3)=3orNumber(_root.winox4)+Number(_root.winox5)+Number(_root.winox6)=3orNumber(_root.winox7)+Number(_root.winox8)+Number(_root.winox9)=3orNumber(_root.winox1)+Number(_root.winox4)+Number(_root.wino
7、x7)=3orNumber(_root.winox2)+Number(_root.winox5)+Number(_root.winox8)=3orNumber(_root.winox3)+Number(_root.winox6)+Number(_root.winox9)=3orNumber(_root.winox1)+Number(_root.winox5)+Number(_root.winox9)=3orNumber(_root.winox3)+Number(_root.winox5)+Number(_root.winox7)=3)/当满足胜利条件便进入一个名为“win”的帧,因为该帧位于场
8、景1的时间轴中,所以要先加入tellTarget命令,target设为_root,即主编辑区,再加入如下跳播命令,帧标签设置为wintellTarget(_root)gotoAndStop(win最后我们还要制作计算机不进攻也不防守时放叉子的位置,程序代码为:if(_root.checkeq0/先判断计算机是否放过棋子,可以从_root.check是否为0得知for(_root.a=1;_root.a10;_root.a+)if(eval(_root.ox+_root.a)ne/+_root.a可以是_root.ox1_root.ox9之间的变量,通过eval()得到该变量的值;经for的定义
9、,配合_root.a由19的数值,只要找到哪一格是空的,就下在那一格+_root.a)+_root.a,/设定该格放过棋子_root.loseoxgotoAndStop(3);break;/对方已在其选定的地方放过棋子,再用break跳出for的循环所有计算机的动作,都要在我们下完子但还没胜利的时候发生。整个button按钮的程序代码如下:if(Number(_root.winox1)+Number(_root.winox2)+Number(_root.winox3)=3orNumber(_root.winox4)+Number(_root.winox5)+Number(_root.winox
10、6)=3orNumber(_root.winox7)+Number(_root.winox8)+Number(_root.winox9)=3orNumber(_root.winox1)+Number(_root.winox4)+Number(_root.winox7)=3orNumber(_root.winox2)+Number(_root.winox5)+Number(_root.winox8)=3orNumber(_root.winox3)+Number(_root.winox6)+Number(_root.winox9)=3orNumber(_root.winox1)+Number(_r
11、oot.winox5)+Number(_root.winox9)=3orNumber(_root.winox3)+Number(_root.winox5)+Number(_root.winox7)=3)/else_root.check=;call(attackdefence(3)接下来我们加入AI(人工智能)程序设计。先设好当我们出现失误,让计算机的棋子放在正确位置。如下列原始程序的代码及说明:if(_root.loseox1eqand_root.loseox2eqand_root.ox3neand_root.checkne_root.ox3lose/当计算机未下棋子,而ox1和ox2有计算机
12、的棋子,且ox3是空的,就把计算机设成在ox3下棋子,ox3停止第3帧,即“打叉”图形,_root.check会设成1,再播放我们输掉的画面同理,输入程序的其余代码:if(_root.loseox2eqand_root.loseox3eqand_root.ox1ne_root.ox1and_root.ox2ne_root.ox2if(_root.loseox4eqand_root.loseox5eqand_root.ox6ne_root.ox6and_root.loseox6eqand_root.ox5ne_root.ox5if(_root.loseox6eqand_root.ox4ne_ro
13、ot.ox4if(_root.loseox7eqand_root.loseox8eqand_root.ox9ne_root.ox9and_root.loseox9eqand_root.ox8ne_root.ox8if(_root.loseox9eqand_root.ox7ne_root.ox7and_root.loseox4eq_root.check = and_root.loseox1eqif(_root.loseox5eqif(_root.loseox3eqand_root.loseox7eq4.1井字过三关(3)(4)因程序代码太长,所以我们在MC影片剪辑中新增一个图层“攻击层”来存放这
14、些程序代码。在时间轴上单击“插入图层”按钮新建一个“图层3”,重命名为“攻击层”,在第5帧按F6键插入关键帧,再加入以上动作,新建立的“攻击层”如图4-9所示。图4-9新建立的攻击函数层(5)打开帧“属性”面板,将第5帧命名为“attack”,如图4-10所示。图4-10命令帧为“attack”(6)接下来制作防守程序,使用的程序代码和上面的差不多,不同的代码如下:if(_root.winox1eqand_root.winox2eqand_root.checkeq_root.ox3=_root.loseox3=/当计算机未下棋子,而ox1、ox2是我方的棋子时,计算机会将棋子下在ox3位置,且_root.check会设成1程序的其余代码如下:if(_root.winox2eqand_root.winox3eqand_root.check