第十五讲
Random随机函数的应用
接着是在 Layer1层的第二帧插入一个空的关键帧,在这一帧里如右图画上提示和按钮。在这一帧中,下方的 0……9 这是个数字都要转换成按钮符号( Button Symbol),以便游戏者选择数字。而中间的那个方框,则是用文字工具
( Text Tool)创建的文本域( Text Field),
把这个文本域的属性变量的变量名定为 num
(选中文本域后在菜单种选择 Modify -> Text
Field -> Variable,具体方法参见前面的课程),
如下图所示设置这个文本域的属性。
现在轮到第三和第四帧了,在这两帧里,分别如左图画上答对和答错的结束画面。这两帧中右下方的“再来一次”也要做成按钮符号
( Button Smbol)。这两帧的左边都有一个文本域,这两个文本域都是和第二帧的相同的。
你可以在第二帧中选中文本域,然后在菜单中选择 Edit -> Copy,然后到第三、第四帧中在菜单里选择 Edit -> Paste粘贴,然后移动到合适位置即可。
在第一帧中,首先把这一帧的 Action设为 Stop,
这样就能让游戏者做出选择,选好难度后才进入游戏。接着,分别在“简单”、“普通”和
“高难”三个按钮上单击鼠标右键,在弹出的菜单中选择 Properties..,-> Action为这三个按钮添入以下程序(下面的程序是以“简单”按钮为例的):
On (Release)
Set Variable,"chance" = 4
Go to Next Frame
End On
这段程序主要是确定是以那种模式进行游戏,所以 Set Variable所设的变量
chance就是机会的次数,Go to Next
Frame是进入下一帧(开始游戏)。所以,“普通”和“高难”两个按钮的程序也是类似的,只是机会的次数要相应地设少一些,“普通”模式中,chance
的值赋成 2,“高难”则赋成 0。
第二帧,则是这个游戏里最关键的一帧,主要负责了游戏的数据的生成和判断,所以,可得仔细一点呀!
首先,把这一帧的 Action作如下设置,进行数据的初始化:
Set Variable,"num" = "?"
Set Variable,"wrong" = 0
Stop
其中,num就是文本域的属性变量,我们先赋一个“?”给它,表示不确定的值。变量
wrong则是纪录选错数字的次数,以便和
chance比较,决定是否要结束游戏。
接着,我们要给这一帧中的十个数字按钮加上程序。这些程序的功能都是一样的 —— 判断随机生成的 num得知是否与按下的数值相同,
然后根据结果的不同做出条转的选择。要是我们给每一个按钮都写上同样的程序,那么我们的工作量就会成倍地增加。我们能不能象 C语言那样,编写一段子程序( Sub Program)在用到这段程序的时候调用它呢?当然可以的,
下面我们就来看看我们应该怎么做。
在第五帧添加一个空的关键帧。在这一帧的
Action中写入这一段子程序:(如左图所示)
Set Variable,"num" = Random (10)
If (num=i)
Go to and Stop ("right")
Else
If (wrong=chance)
Go to and Stop ("wrong")
End If
Set Variable,"wrong" = wrong+1
End If
第一句中,Set Variable,
"num"=Random (10)意思是随机产生 0-9
之间的一个数字( Random (n)就是产生 0
- (n-1)之间的一个数字)。判断中涉及到的变量 i则是纪录按下了那个按钮。而跳转到 "right"和 "wrong"则分别是第三第四帧的卷标( Label),是结果而定跳转到正确或错误的结束画面。当然如果选的数字是错误的,wrong变量还要自加一
当然,我们不能忘了在第二帧中调用第五帧中的程序,所以我们还要给第五帧取一个卷标
( Label)就像 C域严重的函数名( Function
Name)一样。我们把第五帧的 Label定为
program(在 Timeline区第五帧的方格点右键,
在弹出的菜单中选择 Properties..,-> Label,在
Label项中填入 program)。然后,回到第二帧,
分别选择十个按钮,给它们加上这么一段
Action代码(以数字 0的按钮为例):
On (Release)
Set Variable,"i" = 0
Call ("program")
End On
最后是第三和第四两帧。这两帧比较简单,首先把这两帧的卷标( Label)分别定义成 right和 wrong,接着我们只要分别给这两帧中的“再来一次”按钮加上这么一段程序,让它跳回第一帧就可以了:
,
On (Release)
Go to and Stop (1)
End On
如右图。