#### 石头、剪子、布

一、实例说明

这是一个古老的游戏，几乎每个人小时候都玩过，现在用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语句。

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