石头、剪子、布

一、实例说明

这是一个古老的游戏,几乎每个人小时候都玩过,现在用Flash编制一个游戏程序,通过这个程序,能了解一些Action的高级应用。

二、有关知识

绘制实例,Action编程,按钮的制作及设置,变量。

三、制作过程

步骤1:打开Flash,建立一个新文件。

步骤2:从菜单栏中选择插入>添加符号(Insert>New Symbol),在出现的对话框中选图像(Graphic),命名为“gr背景”,用绘图工具在工作区画一个背景图形,如图1所示。

提示:gr表示图像Graphic的意思,这样可以避免重名的麻烦,使用者虽然可以随意命名,但养成一个习惯有利于提高效率。

步骤3:重复步骤2,分别制作的三个图像,命名为“gr石头”、“gr剪子”、“gr布”。 如图2所示。

1 背景

2 表示石头、剪子、布的三个图像

步骤4:从菜单栏中选择插入>添加符号(Insert>New Symbol),在出现的对话框中选按钮(Button),命名为“bu石头”,出现按钮编辑窗口后,从菜单栏中选择窗口>库(Window>libuary),在库中将“gr石头”拖到舞台,这时Up帧下出现一个黑点,表示Up帧为关键帧,然后再添加其他图形,比如给图像加一个小框,下面写上文字,以使这个按钮看起来更漂亮些;鼠标单击Over帧后按F6键,插入关键帧,Over表示鼠标停留在按钮上时所显示的图像,将图形的白色外框换成灰色;设置Down为关键帧,Down表示鼠标按下按钮时所显示的图像,将白色的字填上红色;设置Hit为关键帧,Hit表示按钮的响应范围,如3所示。

3 按钮“bu石头”的制作

步骤5:按步骤4的方法将“gr剪子”、“gr布”分别制成按钮“bu剪子”、“bu布”。

步骤6:从菜单栏中选择 插入>添加符号(Insert>New Symbol),在出现的对话框中选电影片段(Movie Clip),命名为“MC石剪布”,该Movie Clip共设4帧,先设第1帧为关键帧,注意,第1帧中不放置任何对象,在以后的3个帧中分别放置“gr石头”、“gr剪子”、“gr布”,右击第1帧,在Action面板选中Actions/Movie Control/stop。

步骤7:再做两个按钮“bu重新开始”和“bu结束”,它们的功能是用来在游戏结束后,用来选择重新开始游戏和退出游戏。其中“bu重新开始”的具体做法是,在Up,Over,Down帧里写上“再战三百回合”的字样,在Hit帧里指定响应范围。如图4所示。

 

4 按钮“重新开始”的制作

bu结束”可以用同样的方法制作。

步骤8:回到主场景,将Layer1改名为“背景”,设置第1帧为空帧,第2帧为关键帧,并将图片“gr背景”放置在“背景”层的第2帧里。

注:以后放入的各元素均为所在层的第2帧。

步骤9:新建名为“按钮”的层,将按钮“bu石头”、 “bu剪子”、 “bu布”放置在这个层里。

步骤10:新建命名为“动画” 的层,将“mc石剪布”重复两次放置在这个层里,如图5所示。

5 按钮在背景中的位置

因为“mc石剪布”的第1帧是空的,所以放置时只能看到一个小圆点,图中的两个小白点就是被放置两次“mc石剪布”。

步骤11:选中左边的“mc石剪布”,在属性面板将其命名为player,在Color下拉框里选色调(Tint),将颜色值设为#FFFF00;同样的方法设置右边“mc石剪布”的实例名为computer ,在Color下拉框里选色调(Tint),将颜色值设为#FF0000。 如图6所示。

6给场景中的电影命名

    步骤12:选择名为computer的“mc石剪布”,执行修改>变形>水平翻转(Modify>Transform>Flip Horizontal)。

    步骤13:新建图层,命名为“变量”,单击文字工具 ,在图7所示的地方加入文字框,并在文字框内输入两个数字:00,设置好字体、字号、颜色。

7 加入文字框

    步骤14:在文字可输入的情况下,鼠标右击文字框,在弹出的菜单中选择面板>文字选项(Panels>Text options),具体设置如图8所示。

8 文字框的设置

步骤15:分别在“玩家胜”、“电脑胜”后加入文字框,设置同上,注意把“玩家胜”后文字框的属性(Var)设置为pla,“电脑胜”后文字框的属性(Var)设置为com。在设置文字框时注意文字框宽度要能容纳两个数字。如图9所示。

9“电脑胜”字段属性的设置

    步骤16:鼠标右击“bu石头”,在Action面板输入如下语句:

语句

解释:

on (press) {

当鼠标按下时执行以下命令

    /:totalplay = /:totalplay+1;

/:totalplay变量加1

    if (/:totalplay == 30) {

判断如果/:totalplay变量为3时执行以下命令

        gotoAndStop (5);

跳至第5帧并停止播放

    } else {

如果/:totalplay不为30,执行以下命令

        /:a = random(3)+2;

变量/:a等于随机数(0,1,2)加2(注)

        if (/:a == 4) {

判断如果/:a为4

            /:com = /:com+1;

变量/:com加1

        }

停止判断

        if (/:a == 3) {

如果/:a为3

            /:pla = /:pla+1;

变量/:pla加1

        }

停止判断

        tellTarget ("computer") {

告知名为computer的目标

            gotoAndStop (/:a);

跳至computer目标的第/:a帧并停止

        }

停止告知目标

        tellTarget ("person") {

告知名为person的目标

            gotoAndStop (2);

跳至person目标的第2帧并停止

        }

停止告知

    }

停止判断

}

程序结束

注:Random(3)的意思为由电脑自行从0,1,2三个数中产生一个随机数。

步骤17:鼠标右击“bu剪子”,在Action面板输入如下语句:

on (press) {

    /:totalplay = /:totalplay+1;

    if (/:totalplay == 30) {

        gotoAndStop (5);

    } else {

        /:a = random(3)+2;

        if (/:a == 2) {

            /:com = /:com+1;

        }

        if (/:a == 4) {

            /:pla = /:pla+1;

        }

        tellTarget ("computer") {

            gotoAndStop (/:a);

        }

        tellTarget ("person") {

            gotoAndStop (3);

        }

    }

}

    步骤18:鼠标右击“bu布”,在Action面板输入如下语句:

on (press) {

    /:totalplay = /:totalplay+1;

    if (/:totalplay == 30) {

        gotoAndStop (5);

    } else {

        /:a = random(3)+2;

        if (/:a == 3) {

            /:com = /:com+1;

        }

        if (/:a == 2) {

            /:pla = /:pla+1;

        }

        tellTarget ("computer") {

            gotoAndStop (/:a);

        }

        tellTarget ("person") {

            gotoAndStop (4);

        }

    }

}

    步骤19:建立新层,命名为“结果”,设置“结果”层的第5帧为关键帧,双击第5帧,在Actions面板中输入以下语句:

语句:

解释:

if (/:pla > /:com) {

如果变量/:pla大于变量/:com

    gotoAndStop (6);

跳至第6帧并停止

} else if (/:pla </:com) {

如果变量/:pla小于变量/:com

    gotoAndStop (7);

跳至第7帧并停止

}

停止判断

if (/:pla == /:com) {

如果变量/:pla等于变量/:com

    gotoAndStop (8);

跳至第8帧并停止

}

停止判断

    步骤20:在编程时,设置为游戏结束后如果玩家获胜则跳转到第6帧,可按图10所示设置,图中两处00为文字框,具体设置同步骤15,左边文字框属性(Var)为“pla”,右边文字框属性(Var)为“com”。打开窗口>库(Window>Library),把“bu重新开始”和“bu退出”放置在页面的右下角,右击“bu重新开始”,在Actions面板中输入以下语句:

 on (press) {

    gotoAndPlay (1);

}

    在“bu退出”的Actions面板中输入:

on (release) {

    fscommand ("quit", "");

}

10 玩家获胜帧

    步骤22:设置“结果”层的第7帧为关键帧,在编程时,设置为游戏结束后如果电脑获胜则跳转到第7帧,可按图11所示设置,其他设置同上。

11 电脑获胜帧

    步骤23:设置“结果”层的第8帧为关键帧,在编程时,设置为游戏结束后如果战平则跳转到第8帧,可按图12所示设置,其他设置同上。

12 双方战平帧

    步骤24:设置“结果”层的第1帧为关键帧,双击第1帧,在Actions面板中输入以下语句:

/:pla = 0;

/:com = 0;

/:totalplay = 0;

步骤25:设置“结果”层的第2帧为关键帧,双击第2帧,在Actions面板中加入stop语句。

好了,现在可以用菜单栏中文件>导出影片