Flash游戲開發(fā)實例系列_第1頁
Flash游戲開發(fā)實例系列_第2頁
Flash游戲開發(fā)實例系列_第3頁
Flash游戲開發(fā)實例系列_第4頁
Flash游戲開發(fā)實例系列_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Flash游戲開發(fā)實例系列:打小狗在Flash游戲中,打小狗 老鼠等)游戲是比較基礎的游戲了。如果對 Flash游戲設計有興趣的朋友,想學習如何用 Flash來制作游戲的朋友,可要好好學習這個游戲的制作哦。因為該游戲中使用的都是一些比較基礎的、基本的和常 用的ActionScript腳本語言。另外,我們也可以從中學到Flash游戲策劃、設計到制作完成的一些概念、方法和技巧等知識。游戲原理:首先,游戲通過startdrag(、Mouse.hide(來改變隱藏原來的鼠標,把原先的鼠標換成菜刀,這樣砍起來才過癮嘛:)。使用Math.ramd on (并配合遮罩技術使小狗能隨機得岀現在洞口。最后的總分

2、會在一個輸入文本框中顯示岀來,見圖1所示。游戲玩法:游戲的玩法很簡單,相信大部分讀者都應該知道。就是先移動鼠標到小狗的頭上,然后安下鼠標左鍵,擊中小狗 就得分,否則得分為0。玩這個游戲的意義就在于,看誰能在一定的時間限制內,得到最多的分數,以測驗誰頭腦反應的最塊,誰操作鼠標最靈活。游戲定義:在設計游戲前,總需要考慮這樣幾個問題,游戲環(huán)境的形成、規(guī)則的創(chuàng)建以及如何編寫游戲的代碼。但幸運的的 是,這個打小狗 老鼠等)的游戲定義起來并不復雜。1 游戲環(huán)境。首先要考慮的是游戲在怎樣的一個環(huán)境中進行。這是實現一個簡單的順序游戲最關鍵的部分。該 游戲中,通過隨機的方法來讓小狗岀現,這一點確保了游戲的可玩性

3、。對游戲而言,可玩性是很重要的,沒有可玩性 的游戲是不會有玩家去玩第二次的。2 控制方法。玩家如何控制游戲中的角色,操作是否方便有決定了游戲的可玩性。我們可以設定許多行為方法 來控制游戲主角的運動。在該游戲中,主要是讓玩家能夠自由的控制鼠標。3 游戲結束。游戲中最困難的事情之一就是判定游戲是否結束。當游戲運行一段時間后,游戲將會停止,并在 動態(tài)文本中顯示岀玩家的最后得分。游戲制作:打開Flash MX,設置場景大小為 400pxX 360px,背景色為#006699,幀頻為15fps。在游戲制作之前,為了讓 大家有一個整體的感覺,并在以后的設計中做到心中有數,所以筆者在游戲設計制作前先讓大家看

4、看游戲主場景中層 與幀的結構關系。如圖2所示。&呂口L510i j.a iii i.i iiIS201.1 li 1 1 11 1 1 J 12sB腳本層* 0DSoB標簽* 谿韜gmn:r叫G?鼠標* L遮罩* L小狗* rB分值* a uB總分* B青員* I也L1* 0。Mouse.hide(圖5點選第2幀,按F6鍵插入關鍵幀,然后按快捷鍵Ctrl+T打開 變形”面板使菜刀發(fā)生20度旋轉,見圖6Roo.c% * | 100.0% r 約束vuHiinvn24C Gxorn *金龍轉 厶|巫叭圖64 .設計小狗運動。1 按快捷鍵Ctrl+F8新建一個名為 小狗運動”的影片剪輯元件,然后從庫

5、中小狗”元件到小狗運動”元件的場景中。2 在元件 小狗運動”的場景中點選 圖層1”的第5、10、20、25幀分別插入關鍵幀,然后選中第10幀,將此幀上小狗”寸象的位置向上移動大約 50px,鼠標右鍵點選第 5到10幀間任一幀,選擇創(chuàng)建補間動畫命令,建立運動漸變動畫,如圖 7所示。在第20到25幀也建立一個運動漸變動畫,見圖7,只是小狗運動是向下的&囹口|151015Z0屮hILU蘭也 舉理誇r1.6丟確1遇小狗運動圖73 新建一個名為 點擊”的按鈕元件。在元件的點擊”幀上按F6創(chuàng)鍵關鍵幀,然后用矩形”工具繪制一個矩形,作為隱形按鈕的控制區(qū),如圖8所示。洽自巳ii弾起I指針豊過I按下0Owin-

6、 is.ofPS I o.2s? + dP圖層1圖84 在小狗運動”元件的場景中新建一個圖層2”在圖層2”的第5幀插入關鍵幀,從庫中拖動點擊”按鈕元件到 圖層2”上,刪除該層中第 21到25幀之間的所有幀,如圖 9所示。呂L510152025G?圖層2 o Q 一.0B國層1* qn115.0 Fps IJU坐回門5再新建一個 輸入代碼stop(。 名設為down。圖9圖層3”在該層的第1、5、20幀分別建立空白的關鍵幀。點選第 1幀,按F9打開動作”面板點選第5幀,在 屬性面板中將該幀的標簽名設置為 up,如圖10所示。同樣將第 20幀的標簽妙拯口ii | t i i t i | t i51

7、(1152025|iriki|ifi|ig|iiri|i4i|iJt口曲良2Q|tuptDOWNal0n國層1X 口q ? A圖10設計場景1。1 回場景1,將 相同的對象,按快捷鍵圖層1”改名為背景”接著從庫面板中把元件洞拖放到場景1中的第1層,然后分別復制Ctrl+K打開 對齊”面板,把9個洞”排好,如圖11所示。接著用 文本”工具在場景的右下方輸入得分兩個字 ”在第5幀插入關鍵幀,輸入如下代碼:/ random(9 是從0-9中任取一數 / gotoAndPlay(up 是讓游戲跳轉到 up幀運行,實現小狗的隨機岀現 _rootpig add ran dom(9.gotoA ndPlay

8、(up。6 把菜刀”元件拖到背景層中,在屬性”面板中起實例名為 knife,在腳本”層的第4幀插入關鍵幀,輸入一下代碼:/ mouse.hide( 把默認的鼠標隱藏起來。mouse.hide( 。 startDrag (k ni fe, true。設計記分系統(tǒng)。1 在場景1腳本”層的第1幀輸入如下代碼:ROUND = 0。SCORE = 0。TATAL = 0。stop(。2 點選 標簽”層的第5幀,在 屬性”面板上定義該幀的標簽名為again,然后在 腳本”層的第22幀輸入代碼:ROUND+ 。if ( ROUND gotoA ndPlay (agai n。當ROUND小于11時將不斷循環(huán)。

9、游戲的計分方式為越快擊中小狗分數越高。在場景1中新建一個 分值”層,在第5幀插入一個空白關鍵幀,輸入“POINT = 100?!痹诘?0幀也插入一個空白關鍵幀,輸入“POINT = 0?!比鐖D14所示。畫a151) d li d10h ii ii iie i q f i q |15 p q e i i e 1小狗* dB分值* Os 1B分數 nB背杲1】 Gl圖143 在場景1中新建一給 分數”層,用 文本”工具拖岀一個文本框,接著在屬性面板中設置文本框為動態(tài)文ies New Roniajt本”,變量名為score。如圖15所示。0口背昌* * ” n*o* aI、1 |右| 右1【:115

10、.0 fpsC三IFd HJ Jll自動調整宇距】lin | El| 變量:Score字符J圖15在標簽”層的第22幀輸入如下代碼:Tatal += Poi ntScore = Tatal其中Tatal為總分,Score = Tatal使得文本框中可以顯示現在的玩家的得分。那游戲怎么知道玩家是否打中了小狗呢?下面我們就要在小狗運動”元件中加入的 點擊”按鈕元件。然后點選點擊”按鈕,按F9打開 動作”面板,輸入代碼:on (release這段代碼是在該按鈕被鼠標點擊時,影片跳至down幀開始播放,而場景 1則跳轉至End幀播放。島昌口i510152025按鈕/ * !口立字* * 小狗* 41段

11、用I|舊|廠廠I1SDFM 1eWp確血圖16設計場景2。其實,場景2是很容易設計的,如圖16所示。第第25幀的代碼是“gotoAndPlay(1?!币驗槠P系,場景2具體的由讀者參考源文件自行設計。Flash 游戲制作-五子連珠五子連珠,在民間俗稱”五子棋”,是一種流傳很廣的益智棋類游戲,游戲規(guī)則非常簡單,適合各個年齡段的朋友玩,相信大家以 前也一定玩過此游戲,傳統(tǒng)的玩法是兩玩家在圍棋棋盤上進行比賽,這里玩家的對手將變成電腦,想不想和電腦過過招呢?下面 我們就來學習使用 Flash制作五子連珠這個游戲。游戲的主界面如圖1所示:M&croRredie Flsh Flayer 8文件世1直肴迪

12、控制心幫肋12 3 J & 6 7 a 9 10 11 12 13 14 15Xdos : 8Yoos : JM * 恢!電腦走棋!電廂走棋以后馬上就進行計管I暫時會停顧1T,諸不要著急圖1游戲玩法:五子連珠這個游戲需要由兩位選手一起來完成,其中一位是電腦,電腦在游戲中使用黑棋比賽,您在游戲中使用白棋進行比賽, 游戲的目的是盡量將自己的棋在棋盤上排列成五顆棋子連在一起的直線,水平方向,垂直方向或者斜向都可以,但是不能有拐 點,必須是一條直線,哪一方先連好,則勝利。玩家在游戲中一方面要盡量將自己的棋子連起來,另一方面也需要阻礙對手進行 連子,不讓對手輕易的將棋子連起來,直到有一方先連好五顆棋子,

13、則游戲結束。游戲中為了防止一方沒有看清對方上一步的落 子位置,在棋盤的右上角將顯示上一步的落子位置,棋子的位置根據棋盤上的橫縱標識來決定 橫向為1-15,縱向為A-O)游戲制作思路:本游戲制作起來有一定的難度,難度的關鍵在于玩家中有一方是電腦,如何合理的控制電腦走棋是最關鍵的部分。如果要實現電 腦的自動計算棋局和決定落子位置,就需要用到一些Ai人工智能)方面的知識,在游戲制作中會詳細講解。棋類游戲一般都會在一個二維的棋盤上進行,所以自然的就會使用二維數組來記錄棋子的位置和決定落子的位置,數組在棋類游 戲中也是應用非常的廣泛。游戲制作步驟:下面我們就來開始具體的游戲制作步驟:游戲素材的準備:1

14、.棋子的準備:棋類游戲當然少不了棋子,本游戲中需要兩類棋子,一種為黑色棋子,一種為白色棋子,默認情況下電腦使用 黑色棋子,我們可以從外部導入兩副棋子圖片,也可以在Flash中進行手工繪制。本實例中我們就來自己制作兩個棋子。新建一個Graphic組件,并命名為 black graphic好了,如圖2所示:,使用橢圓工具繪制一個圓形,并填充上黑色,這樣一個簡單的黑色棋子就做圖2因為我們需要在游戲中使用Action對棋子進行控制,所以需要將上面做好的Graphic組件轉換為Movie clip類型的組件。所以新建一個 movie clip 組件,命名為black,將組件black graphic拖到

15、組件black的編輯區(qū)即可。按照同樣的方法制作一個white graphic 組件,并繪制一個白色的棋子,然后在建立相應的white movie clip組件,繪制好的白色棋子如圖3所示:圖32.控制按鈕的制作:游戲中需要使用鼠標將棋子落到棋盤上,所以需要使用按鈕結合棋子的方法,因為游戲中我們看到的實際 是棋子,但是控制的是按鈕,所以這里我們只需要制作一個簡單的隱形按鈕即可,按鈕大小和棋子大小相似,如圖4所示:圖4當游戲結束后還需要有一個Replay 按鈕允許玩家重玩游戲,所以可以建立一個簡單的按鈕,用來控制游戲的再次運行,Replay按鈕如圖5所示:圖53 .控制游戲的MC:棋類游戲中少不了

16、大量的 Action程序控制,為了便于對游戲進行控制,一般將Action 放在專門的Movieclip中,然后就可以在游戲的任何地方調用了。A:新建一個Movie clip 組件,命名為blk,進入組件編輯狀態(tài)后,在第一關鍵楨添加如下AS:stop( 。function makelist(maker/自定義函數makelist ,參數為maker ,其作用是生成一個列表if (maker =white/如果傳遞進函數的參數是whitecolor = 2。color_bad = 1。/設置兩變量值else/ 如果傳遞進函數的參數是 black color = 1 。color_bad = 2 。

17、/ 設置兩變量值for (i=0 。 i/ 外循環(huán),循環(huán)變量為 I, 循環(huán)次數為 15 次for (j=0 。 j/外循環(huán),循環(huán)變量為j,循環(huán)次數為15次,兩次循環(huán)共15*15此,正好等于棋盤的大小,用來設 /置棋盤 if (_root.tableij 0/table 數組用來檢查棋盤是否為空,為空,相應的值為 1,否則為 0for (k=0 。 kif (maker =white_puteri*15+jk = 0。else_root.playeri*15+jk = 0。/ 若前一步的落子為白棋,則后一步計算機落子,否則玩家落子 else / 如果棋盤為空for (k=0 。 k x = i

18、。y = j 。score = 5。while (_root.tablex+_root.dirk0y+_root.dirk1color and (x+_root.dirk0and(y+_root.dirk1 = 0 and (y+_root.dirk1 and (x+_root.dirk0 = 0 x = x + _root.dirk0。y = y + _root.dirk1。score = score * 2 。if (_root.tablex+_root.dirk0y+_root.dirk1color_badand (x+_root.dirk0and(y+_root.dirk1 = 0 a

19、nd (y+_root.dirk1 and (x+_root.dirk0 = 0 score = score / 2 。while (_root.tablex+_root.dirk+40y+_root.dirk+41 = color and (x+_root.dirk+40 and(y+_root.dirk+41 = 0 and (y+_root.dirk+41 and (x+_root.dirk+40 = 0 x = x + _root.dirk+40。y = y + _root.dirk+41。score = score * 2 。 if (score 30 score = score *

20、 2 。if (_root.tablex+_root.dirk+40y+_root.dirk+41= color_badand (x+_root.dirk+40and (y+_root.dirk+41 = 0 and (y+_root.dirk+41 and (x+_root.dirk+40 = 0 score = score / 2 if (maker =white _puteri*15+jk = score。 else _root.playeri*15+jk = score。/ 初始化棋盤,根據上一步落子的不同,來計算一下一步的落子B: 再新建一個 Movie clip 組件,命名為 bl

21、k2, 進入組件編輯狀態(tài)后,在第一關鍵楨添加 as:stop( 在第六楨插入一個關鍵楨,并添加如下 AS: if (_root.playnow = computer / 如果先落子的為電腦,則初始化棋盤 _root.func.makelist(white。且傳遞不同的參數_root.func.makelist(black。/ 分 別 調 用 前 面 定 義 的 自 定 義 函 數max_computer = 0 max_player = 0 k = 0 。/ 定義三個變量for (j=0 。 j for (i=0 。 i for (k=0 。 k if (_puterj*15+ik = max

22、_computer rndnum = random ( 100 + 1。if (rndnum 50 max_computer = _puterj*15+ik xc = i 。yc = j 。 if (_puterj*15+ik max_computer max_computer = _puterj*15+ikxc = i 。yc = j 。if (_root.playerj*15+ik max_player max_player = _root.playerj*15+ik xp = i 。yp = j 。if (max_computer max_player x = xc 。y = yc 。

23、else x = xp 。y = yp 。/ 繪制棋子num = y * 15 + x。removeMovieClip(_root.b add num。duplicateMovieClip(_root.white, white add num, num + 300 setProperty(_root.white add num, _x, 34.7 + x * 20。setProperty(_root.white add num, _y, 34.7 + y * 20。_root.tableyx = / 顯示棋子_root.display = Xpos : + (x + 1。temp = chr

24、( y + 65。_root.display1 = Ypos : + temp。_root.playnow = player 。/ 判斷是否獲勝xx = x 。yy = y 。for (k=0 。 k if (_root.a_result 6 _root.a_result = 0。x = xx 。 y = yy 。 and (x+_root.dirk0= -1 andwhile (_root.tableyx = 2 and (y+_root.dirk1 (x+_root.dirk0 and (y+_root.dirk1 = -1 x = x + _root.dirk0。y = y + _roo

25、t.dirk1。/ _root.table+y+x+=+_root.tableyx _root.a_result = _root.a_result+1。 x = xx y = yy 。 and (x+_root.dirk+40= -1 andwhile (_root.tableyx = 2 and (y+_root.dirk+41 (x+_root.dirk+40 and (y+_root.dirk+41 = -1 x = x + _root.dirk+40 。y = y + _root.dirk+41 。_root.a_result = _root.a_result+1 。if (_root

26、.a_result = 6 _root.playnow = nobody 。if (_root.playnow =nobodyC: 新建一個 Movie clip 組件,并命名為 bb, 此組件用來計算電腦如何走棋,進入組件編輯狀態(tài)后,在圖層 layer1 繪制一個有填 充色的矩形,然后在第 5 楨插入一個關鍵楨,在同樣位置繪制一個大小相同填充色不同的矩形。新建一個圖層,在矩形里輸入提 示文字:電腦走棋,然后再新建一個圖層 Action, 在第一楨添加 AS: stop( 。, 在第 8 楨插入一個關鍵楨,在此楨添加如下 AS: if (_root.playnow = computer / 初

27、始化棋盤 _root.func.makelist(white。_root.func.makelist(black。/ 調用自定義函數 max_computer = 0。max_player = 0。k = 0 。/ 定義三變量for (j=0 。 j for (i=0 。 i for (k=0 。 k if (_puterj*15+ik = max_computer rndnum = random ( 100 + 1。if (rndnum 50 max_computer = _puterj*15+ik xc = i 。yc = j 。if (_puterj*15+ik max_computer

28、 max_computer = _puterj*15+ik xc = i 。yc = j 。if (_root.playerj*15+ik max_player max_player = _root.playerj*15+ik xp = i 。yp = j 。if (maxIcompuier V maxIP-ayerv 宀X H XO 。y H yc 。e-se 宀x H xp 。yHyp。)_B趙癌num M y *5 + x 。removeMoviec=p(lro2.b add numv 。 dup=ca0Moviec=p(lro2.whip-whiie- add num- num + 3

29、00V perty(lro2.whi0add num- IX- 34.7 + x * 20V perty(lro2.whi0add num- y- 34.7 + y * 20V roorrab-es-xj H 2 。=和引癌ros-.disp-ay M-XPOS ; + (X +V 。iemp M chr (y + 65V 。ros-dsp-ayH -YPOS 二-+ iemp 。roohp-aynow H -p-ayer= 。二雪徊審紹wXX M X 。yyMy 。for (kMO 。kA4。k+v 宀if (lrooi.alresu_i Av 6V 宀 lrooi.

30、alresu_i H 0 。x M xx y Myy 。wh=e (lroo.s-b-e【y= _root.playnow = nobody/游戲結束 if (_root.playnow =nobody 最后的時間線如圖6所示:meg円鬥aoLI J G2* * OB Layer 1 Q nL fi4 希 iPl囲!電腦走棋1D:再新建一個movie clip 組件,命名為buttonclip,此組件用來控制雙方的落子,進入組件編輯狀態(tài)后,將前面做好的隱形按鈕 拖放到編輯區(qū)中,然后給第一楨添加AS:stop( 。.E:最后再制作一個 movie clip, 命名為gameover,進入組件編輯

31、狀態(tài)后,連續(xù)建立四個圖層,分別為白,然后在第2楨繪制電腦獲勝的提示信息,并將此組件用來判斷游戲是否結束,也就是判斷是缶有一方已經連好了五顆棋子。layer1,layer2,layer3 和 action,在 layer1,layer2,layer3的第一楨插入空Replay按鈕拖到編輯區(qū)中,給按鈕添加As: on (release如圖7所示:REFUW圖7在layer1,layer2,layer3的第三楨按照同樣的方法設置您勝利的提示信息,如圖 8所示:REPLAY圖10分別將組件 white,black,buttonclip,blk,bb和gameover 拖到舞臺的合適位置,如圖11所示:

32、,在第四關鍵楨添10所示:圖8然后回到圖層action,接下來就要添加具體的控制Action 了,在此圖層的前三個關鍵楨分別添加as: stop(加如下AS:for (i=0。i removeMovieClip(_root.black add i。removeMovieClip(_root.white add i。removeMovieClip(_root.b add i。/清除棋盤上的棋子_root.gotoAndPlay(run。/跳轉到游戲的開始最后的時間線如圖9所示: TiaeLinc血國口i510action/ * * !0 0. ooo.l or)3r t.B Layer 2呂口c【1D Laytr I回uI |j圖9布置主場景:游戲的主要工作完成后,接下來需要布置主場景了。首先使用繪圖工具繪制出游戲中的棋盤,棋盤大小為15*15的矩陣,然后給棋盤標上橫向和縱向的標識,如圖:iKO!a = a a a :史96主卓口巨,:欝呻舍忡物一: ?下.: :-它森*目舞:圖11組件white的實例名為:black組件black的實例名為:white組件buttonclip的實例名為:b組件blk的實例名為:func組件bb的實例名為:computerrun組件gameover的實例名為:g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論