麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 媒體動畫 > 正文

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

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

  第一個函數是生成 16 個隨機列表的函數 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 !高級指南》中的一段代碼,它非常巧妙地通過循環語句中使用 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。

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

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

on move sth

return getat(mlist,sth)

end

它根據空白所在通道號來返回當前可移動拼圖通道號列表。這里我使用了一個二維列表 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] 下一頁  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产一区二区三区在线观看 | 国产精品亚洲欧美一级在线 | 中文字幕一区久久 | 国产一区二区三区在线观看视频 | 夜添久久精品亚洲国产精品 | 成人激情久久 | 羞羞答答tv | 美女视频黄a视频免费全过程 | 在线91视频 | 黄色片网站免费在线观看 | 亚洲精品动漫在线观看 | 蜜桃视频最新网址 | 渔夫荒淫艳史 | 美女视频黄a视频免费全过程 | av在线高清观看 | 天天曰夜夜操 | 久久精品日产第一区二区三区 | 成人福利在线 | 日韩精品二区 | 一本色道久久99精品综合蜜臀 | 欧美女优一区 | 88xx成人永久免费观看 | 日韩黄色片在线观看 | 日韩视频一区二区三区四区 | 久久综合久久精品 | 视频一区 中文字幕 | 国产不卡av在线 | 五月天影院,久久综合, | 国产精品av久久久久久网址 | 久久9久久 | 天堂成人一区二区三区 | 久久国产综合精品 | 国产成人精品自拍视频 | 成人h精品动漫一区二区三区 | 在线播放黄色片 | 九九热视频免费观看 | 免费看黄色三级毛片 | 亚洲成人久久精品 | 蜜桃一本色道久久综合亚洲精品冫 | 97久色 | 精品一区二区久久久久久久网精 |