Flash游戲開發實戰(一)


Flash as3.0游戲開發之《植物大戰僵屍》-游戲實現原理及地圖實現(一) - 第1張  | 游戲開發網-最好的游戲編程開發技術網站!

我不得不承認,我不是植物大戰僵屍的骨灰玩家,所以,如果你發現這個系列的教程有什么地方錯誤的,請告訴我。

定義游戲的主要結構

植物大戰僵給了我們很好的視覺和感覺上的享受。你得保護你的房子以免被吃腦的僵屍入侵,這相當的吸引人。總的來說,殺死僵屍是很有趣的。但是這視覺上的東西和游戲玩法無關,我們可以用屠夫大戰管子工,鴿子大戰駱駝,圓形大戰方塊來代替。

在這個系列的教程中,我們用圓形來代替植物,用方塊來代替僵屍,偉大的圓形將會阻止邪惡的方塊進入我們的基地。游戲區域可以被簡化為一個區塊游戲。

設想一下這種局面:
Flash as3.0游戲開發之《植物大戰僵屍》-游戲實現原理及地圖實現(一) - 第2張  | 游戲開發網-最好的游戲編程開發技術網站!

然后盡量把它想象成這樣:
Flash as3.0游戲開發之《植物大戰僵屍》-游戲實現原理及地圖實現(一) - 第3張  | 游戲開發網-最好的游戲編程開發技術網站!

我們所擁有的是一個位於(2,2)的植物,它會盡力阻止走在第二行(從第0行開始,下同)的僵屍,並且另一個僵屍正在沿着第三行接近我們的基地,還有一個正從第四列落下的陽光。不可能有另外一個植物位於(2,2),並且不可能出現一個僵屍走在第二行與第三行之間。

創建游戲區域

正如你在上圖看到的那樣,這個游戲的區域是一個5行9列的矩陣。因此,第一件要做的事就是定義一個數組。我設想你的fla文件有一個文檔類為Main。下面是Main.as的內容:

這樣,gameField數組就是一個5*9的矩陣了。

畫出游戲區域

下面的代碼對於測試來說足夠了,至少我們會畫出一個游戲區域來。

drawField函數所做的事情都能夠在setupField函數里實現,但是我想讓他們分離,我得讓一個函數只處理一件事。唯一有趣的一行代碼是第25行的是在#007D00和#00AE00之間生成隨機顏色。

這就是我們的游戲區域了。如果你想要讓區塊體面點。請。。。自便。

捕獲陽光

陽光是植物大戰僵屍里的貨幣。他們從天上掉下來,落到某一區塊上。撿起這些陽光,你才能購買植物。

我用到了timer事件使得每五秒落下一束陽光,如果你對timer還不熟悉的話,請搜索。

現在,陽光還不會從天上掉下來,而是直接出現在某一隨機的區塊中。此時此刻,我還不知道是否兩束陽光可以同時落到同一區塊中。在這個例子里,他們是可以的,但是如果原版的植物大戰僵屍里不允許這樣的話,請告訴我。

當一束陽光落到地上的時候,它能夠被玩家撿起。一個鼠標事件偵聽器處理這整個任務。下面是代碼:

下面簡要概述一下用到的函數:
drawField:畫出游戲區域
fallingSuns:開始制造陽光,使他們墜落
newSun:創建新的陽光
setupField:生成區塊數組
sunClicked:當玩家點擊陽光時調用
下面是效果:



用鼠標撿起陽光吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM