Director匹配精灵游戏

来源:网络时间:2011-04-28

  问题

  我正在做一个锻炼记忆力的游戏,用户在点击了一个精灵后,必须在两秒以内点击另一个与它匹配的精灵。我用全局变量来记录匹配的变量,但我不确定如何来做时间记录这部分工作。我已经尝试过使用”the shorttime”,但我找不到一个好的方法将所得的时间相减。

  回答

  用时钟来功能作为运算时间的基础,在dirctor里是非常复杂的部分-----尽管我不是很清楚为什么必须这样。(the time始终是作为字符串输出的,而字符串对我并没有太大的意义。)无论如何,我们并不需要担心,因为我们不使用the short time。我们确实不需要知道具体的时间是多少。我们更愿意了解一个事件和另一个事件的间隔的时间。这就是说,我们更需要一个秒表,而不是一个钟。幸运的是用timer的命令很容易做到这一点。

  Timer是一种自由的计时工具。它以”ticks”------也就是60分之1秒计时。你唯一需要掌握的命令就是”starttimer”,这会使timer复位到0。只要开始计时,你可以在任何时候检查数值以便得知过去的时间。

  让我们来写一个行为,以接受这个小小的挑战。首先,我们来对这个行为来定一下位。当你将这个行为附加到精灵上的时候,你会希望能够输入一个名称,这样对应的精灵也用同一个名称。你也会希望能够定义两次点击的延迟时间(用ticks----60ticks等于一秒)。这将是你可以将这行为重复使用到任意一组精灵上。第二步,在运行的时候,当精灵被点击,以下是需要做的事情。

  1. 判断第一次和第二次点击的是不是一组。

  2. 如果是第一次点击,那么便需要在全局变量中储存这一组的名字并且开始计时。

  3. 如果是第二次点击,那么便需要核实是否与上次点击储存在全局变量中的名称一致。

  4. 如果名称相符,那么便需要检测是否超时。

  5. 在第二次点击后并且检测后,需要将全局变量复位到0。

  以下是这个行为。

----timermatch behavior

----copyright © 1998,zzp online,llc(它已经5岁了)

property pgroup

propert ptimelapse

global gclickgrop

on getpropertydescriptionlist

set d=[:]

addprop d,#pgrop,[#default:#first,#format:#symbol,#comment:”匹配的组”]

addprop d,#ptimelapse,[#default:120t,#format:#integerl,#comment:”间隔时间”]

return d

end

on mousedown me

if gclickgrop=#null then

set gclickgroup=pgroup

starttimer

else

if gclickgroup=pgrop then

if the timer<120 then

alert “这是一组”

else

alert “太慢”

end if

else

alert “不是一组”

end if

set gclickgroup=#null

end if

end

发表评论

最新评论(共0条)