如何使用Director编写“拼图游戏”

互联网 | 编辑: 2003-05-29 00:00:00 一键看全文

世界上很多大公司都使用 Director 制作自己的多媒体教学光盘。

拼图制作二

看起来很复杂,但实际做一遍并没有那么麻烦,相对使用别的高级语言来编写此程序,Lingo 需要您使用新的思路来考虑编程。它使您不用涉及许多编程细节,而更多的考虑解决问题的方法,而它又没有传统脚本语言那么功能贫乏。

首先,我们需要自己编写几个函数(或个人句柄)。

第一个函数是生成16 个随机列表的函数 generateList。

它的具体代码如下:

on generateList

  global gEmpty,randomList

1

  set randomList = []

  repeat with x = 1 to 16

    addAt(randomList,random(x),x)

  end repeat

end

因为Lingo 没有提供对列表随机排列的功能,所以这里使用了来自Tab Julius 先生的《Lingo !高级指南》中的一段代码,它非常巧妙地通过循环语句中使用 addAt(),random()函数生成随机列表。它在循环中先随机产生列表位置,并将其赋予1-16 中的值,当 addAt()函数向列表中相同位置添加值时,它会将位置推后,这种特殊的工作方式将不会出现重复现象。

第二个函数也是最重要的一个函数 exchange()。 它有一个参数,此参数为通道号。当在一个与空白垂直或水平相邻的拼图上单击时,应将二者的角色对换,即,空白所在的通道将角色换为被单击的通道的角色,而单击的通道的角色换为空白。并将被单击的通道号赋予标识空白所在通道的变量 gEmpty。函数中的变量 x 为临时变量,用于作替换时暂存数据。

on exchange  n

  global gEmpty

  set x  to the memberNum of sprite gEmpty

  set the memberNum of sprite gEmpty to  the memberNum of sprite n

  set the memberNum of sprite n to x

  updatestage

  set gEmpty = n

end

此函数用在每个循环帧中 1-16 号通道,用法如下:

on mouseup

  if inList(1) then

  exchange 1

  puppetsound "click"

  end if

end

这里用到了另一个编写的函数 inList(),此函数用于判别当前被单击的通道是否在可移动列表 M 中,如果是在列表 M 中,则返回 TRUE。

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑