国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 媒體動畫 > 正文

Director實例剖析:Director 設(shè)計"拼圖游戲"(2)

2024-09-08 19:27:03
字體:
供稿:網(wǎng)友
director 編寫“拼圖游戲”
  首先,我們需要自己編寫幾個函數(shù)(或個人句柄)。

  第一個函數(shù)是生成 16 個隨機列表的函數(shù) generatelist。

  它的具體代碼如下:

on generatelist

global gempty,randomlist

set randomlist = []

repeat with x = 1 to 16

addat(randomlist,random(x),x)

end repeat

end

  因為 lingo 沒有提供對列表隨機排列的功能,所以這里使用了來自 tab julius 先生的《lingo !高級指南》中的一段代碼,它非常巧妙地通過循環(huán)語句中使用 addat(),random()函數(shù)生成隨機列表。它在循環(huán)中先隨機產(chǎn)生列表位置,并將其賦予 1-16 中的值,當 addat()函數(shù)向列表中相同位置添加值時,它會將位置推后,這種特殊的工作方式將不會出現(xiàn)重復(fù)現(xiàn)象。

  第二個函數(shù)也是最重要的一個函數(shù) exchange()。 它有一個參數(shù), . 此參數(shù)為通道號。當在一個與空白垂直或水平相鄰的拼圖上單擊時,應(yīng)將二者的角色對換,即,空白所在的通道將角色換為被單擊的通道的角色,而單擊的通道的角色換為空白。并將被單擊的通道號賦予標識空白所在通道的變量 gempty。函數(shù)中的變量 x 為臨時變量,用于作替換時暫存數(shù)據(jù)。

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

此函數(shù)用在每個循環(huán)幀中 1-16 號通道,用法如下:

on mouseup

if inlist(1) then

exchange 1

puppetsound "click"

end if

end

這里用到了另一個編寫的函數(shù) inlist(),此函數(shù)用于判別當前被單擊的通道是否在可移動列表 m 中,如果是在列表 m 中,則返回 true。

函數(shù) inlist() 代碼如下:

on inlist cnt

set countnum = count(m)

repeat with x = 1 to countnum

if cnt = getat(m,x) then

return true

exit repeat

end if

end repeat

end

其中m 為當前可移動通道號列表,首先函數(shù)使用count()函數(shù)計算列表 m 中成員的個數(shù),并將其賦予變量 countnum,變量 countnum 為循環(huán)檢測的終止變量。循環(huán)語句中,判定 inlist() 的參數(shù) cnt 是否在列表 m 中。如果在其中,則返回 true,并退出循環(huán)。

另外一個函數(shù)是 move(),它將返回當前可移動通道列表。

on move sth

return getat(mlist,sth)

end

它根據(jù)空白所在通道號來返回當前可移動拼圖通道號列表。這里我使用了一個二維列表 mlist = [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16],其中 m1,m2,m3, ……為空白在 1,2,3,4,5, …..時,可移動通道號列表。舉例,如第一張圖,當空白處為 16 號通道,可以移動的通道為 12 和 15 ,即,m16 = [12,15]。所有這些列表將在on startmovie 事件句柄中初始化。具體代碼如下:

on startmovie

global gempty,randomlist,first,finish,tmp,m1,m2,m3,m4,m5,

m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,mlist,m

set m = []

set tmp = []

set finish = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

set m1 = [2,5]

set m2 = [1,3,6]

set m3 = [2,4,7]

set m4 = [3,8]

set m5 = [1,6,9]

set m6 = [2,5,7,10]

set m7 = [3,6,8,11]

set m8 = [4,7,12]

set m9 = [5,10,13]

set m10 = [6,9,11,14]

set m11 = [7,10,12,15]

[1] [2] 下一頁  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤峰县| 青田县| 漳浦县| 东山县| 平泉县| 民县| 石嘴山市| 胶州市| 新邵县| 治多县| 景东| 孝义市| 莲花县| 高阳县| 乐都县| 格尔木市| 额尔古纳市| 蒙阴县| 嘉义市| 石阡县| 湛江市| 临城县| 玛纳斯县| 兴海县| 泸水县| 宝坻区| 收藏| 云霄县| 天镇县| 云安县| 鹤山市| 平和县| 鹤壁市| 大石桥市| 全椒县| 博乐市| 山西省| 龙山县| 花垣县| 兰西县| 呼玛县|