Director 编写“拼图游戏”(3)
Director 编写“拼图游戏”我已经讲述了所有编写的函数,剩下的一步是最后的,也是最关键的一步。即,在循环帧的帧脚本中调用这些函数。
具体帧脚本如下:
global gEmpty,randomList,First,Finish,Tmp,m1,m2,m3,m4,m5,m6,m7,
m8,m9,m10,m11,m12,m13,m14,m15,m16,mList,M
on enterframe
if First = 0 then
repeat with i = 1 to 16
puppetsprite i,TRUE
set the memberNum of sprite i to getAt(randomList,i)
end repeat
set First = 1
end if
if Finish = Tmp then
go the frame + 1
else
set tmp = []
end if
set M = move(gEmpty)
end
在进入帧事件句柄 on enterframe 中,首先根据变量 First 来判定是否第一次进入当前循环帧,判定条件是 First 是否为0。如果是,则根据 randomList 列表中的值来更新通道 1 - 16 的角色。更新后,将变量 First 赋值为 1 。以免下次在执行此操作。然后比较最终列表 Finish与临时列表 Tmp 之间是否相同,如果相同则,拼图结束。跳到结束帧。否则继续在当前帧循环,并将tmp 列表赋值为空,以免在 tmp 列表因 on exitFrame 的操作而叠加。最后取得空白在当前通道时的可移动列表 M。
on exitFrame
repeat with x = 1 to 16
addAt(Tmp,the memberNum of sprite x )
end repeat
go the frame
end
在退出帧事件句柄 on exitFrame 中,通过循环生成当前各个通道的角色临时列表 Tmp,并用 go the frame 在当前帧循环。
所有程序代码都已讲述完毕。如果将这 16 张图片换成您喜爱的图片的拼图,你可以生成自己风格的拼图游戏。通过上面的讲述,您会发现 Lingo 编程的确与众不同。这样的游戏可以用如此简单的代码在很短的时间内编写完毕。(完)
[1]