亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用js重建星際爭(zhēng)霸

 更新時(shí)間:2006年12月22日 00:00:00   作者:  

演示地址

    http://www.script8.com/works/sc/index.htm

 

背景介紹
  對(duì)很多人來說,javaScript是一種頗為神秘的語言,這種語言由瀏覽器解析,可以實(shí)現(xiàn)很復(fù)雜的功能,但在實(shí)際中又使用甚少。在以相對(duì)定位為基礎(chǔ)的網(wǎng)站體系中,js并不是必不可少的,最早的瀏覽器并不支持js,只需使用純靜態(tài)的html,也能建立功能完備的網(wǎng)站。對(duì)于頁面開發(fā)人員來說,使用js的時(shí)候估計(jì)也就是用于數(shù)據(jù)合法性檢查而已。近年來,隨著ajax概念崛起,js的使用有所增加,不過除了web郵箱等少數(shù)工具型的網(wǎng)站之外,其作用仍然是輔助性的。
  實(shí)際上,js作為最流行的腳本語言,功能是非常強(qiáng)大的,筆者就曾經(jīng)利用js來模擬星際爭(zhēng)霸。大家都知道,星際爭(zhēng)霸是即時(shí)戰(zhàn)略游戲史上的里程碑,在玩家心目中的地位是不言而喻的,泡在各種各樣的網(wǎng)吧里玩星際曾經(jīng)是筆者生活的一部分。僅憑一腔熱血,我就著手用js來開發(fā)星際,這是一次堅(jiān)難的歷程,充滿了挫折,也享受到了樂趣,最后能夠完成,卻是開始時(shí)我也沒有奢望到的。
  js星際源碼最早發(fā)布于無憂腳本的論壇里,得到了很多網(wǎng)友的好評(píng),讓我感動(dòng)之余,也唯有更加努力。通過這次開發(fā),我的js開發(fā)技術(shù)有了很多提高,還認(rèn)識(shí)了許多喜歡js開發(fā)的朋友,幸哉!js星際現(xiàn)在的存放地址是http://www.script8.com/works/sc/index.htm,有興趣的朋友歡迎參與討論。


解決方案
  尋徑算法是游戲的基礎(chǔ),也是運(yùn)算量最大的部分。我沒有使用A*算法,因?yàn)閷?duì)腳本來說開銷太大了,而是自主開發(fā)一種新算法,稱之為交點(diǎn)法,特點(diǎn)是線性尋徑,運(yùn)算量比較小,缺點(diǎn)是不能保證結(jié)果為最短路徑。交點(diǎn)法的基本思路簡(jiǎn)述如下:
  1.從起點(diǎn)到終點(diǎn)畫直線,與障礙物相交時(shí),總會(huì)出現(xiàn)對(duì)應(yīng)的穿入點(diǎn)和穿出點(diǎn)。
  2.從穿入點(diǎn)的兩個(gè)方向同時(shí)繞行障礙物,選擇先到達(dá)穿出點(diǎn)的路線作為前進(jìn)路線,這樣就得到了一條比較原始的路線。
  3.對(duì)路線進(jìn)行優(yōu)化,判斷兩點(diǎn)是否形成通路,刪除冗余點(diǎn),得到最終的路徑。
  尋徑時(shí)大量使用了判斷是否障礙點(diǎn)的運(yùn)算,一般的做法是遍歷數(shù)組,分別比較才能得到結(jié)果。我把障礙點(diǎn)序列變成一個(gè)長(zhǎng)字符串,通過字符串包含關(guān)系就可以判斷出當(dāng)前點(diǎn)是否障礙點(diǎn),這樣就減少了很多運(yùn)算量。
  js星際所實(shí)現(xiàn)的,相當(dāng)于是星際爭(zhēng)霸的開場(chǎng)部分,即采礦、制造建筑物和生產(chǎn)士兵,戰(zhàn)斗部分略有涉及。在編碼之前,就需要有許多準(zhǔn)備工作,光是圖片的制作就非常煩鎖,需要萬分的耐心才行。另外,我還用hta技術(shù)開發(fā)了一個(gè)地圖編輯器,用于生成地圖數(shù)據(jù)。
  游戲里的控制面板比較精簡(jiǎn),縮略地圖和選擇信息集成到右上角的一個(gè)小面板里,其他部分都屬于游戲場(chǎng)景。每個(gè)移動(dòng)單位有8個(gè)方向,以槍兵為例,需要用24張圖片來表現(xiàn)站立和走動(dòng)各種姿態(tài)。這些圖片都集成在一張大圖里,根據(jù)走動(dòng)或站立情況,顯示其中的對(duì)應(yīng)部分,比如在走動(dòng)時(shí),判斷出走動(dòng)方向,一邊移動(dòng)槍兵位置,一邊三張圖片輪顯,表現(xiàn)出走動(dòng)的情形。
  游戲初始化時(shí),載入地圖數(shù)據(jù),根據(jù)不同的建筑物屬性,一方面生成場(chǎng)景,另一方面生成障礙物列表,用于尋路之用。默認(rèn)情況下,地圖上有幾個(gè)礦工,圈選后,點(diǎn)擊目標(biāo)可以自主行走,根據(jù)游戲要求,如果點(diǎn)擊到的是礦石,就會(huì)在礦區(qū)和總部間來回走動(dòng),每次往返都會(huì)增加礦藏量。
  至于哪一種建筑物能生產(chǎn)什么兵,每個(gè)兵需要多少資源,建筑物的生產(chǎn)順序是什么,這些相對(duì)來說都比較容易,無非是做更多的圖片處理和更多的邏輯判斷而已,限于篇幅就不詳細(xì)介紹了。


經(jīng)驗(yàn)分享
  不用太擔(dān)心功能的實(shí)現(xiàn),因?yàn)閖s已經(jīng)非常完善了,可以隨心所欲地進(jìn)行各種運(yùn)算,使用絕對(duì)定位的機(jī)制,可以輕松創(chuàng)建界面,再利用時(shí)鐘模擬多線程,實(shí)時(shí)移動(dòng)圖片,就可以表現(xiàn)動(dòng)畫了,問題主要體現(xiàn)在速度和性能上。因?yàn)閖s作為一種腳本語言,其計(jì)算性能無疑是先天不足的,同時(shí)瀏覽器也不支持directX和openGL等硬加速,動(dòng)畫能力無法另人滿意。只有通過減輕運(yùn)算量,合理分配動(dòng)畫資源,才能保證游戲的平滑運(yùn)行。js星際的開發(fā),正是處處遵循了這個(gè)原則,能簡(jiǎn)則簡(jiǎn),能省則省,非常節(jié)約地使用各種資源,才最終得以實(shí)現(xiàn)。
  千萬不要在游戲中使用濾鏡技術(shù),特別是動(dòng)態(tài)濾鏡,濾鏡渲染時(shí)會(huì)占用大量的cpu,在cpu占用達(dá)到80%以上時(shí),游戲就會(huì)感覺比較卡。這一點(diǎn)和flash做的同類程序有明顯區(qū)別,即使cpu占用率接近100%,flash程序仍然能保持相當(dāng)?shù)钠交?BR>  憑心而論,客戶端的游戲開發(fā),應(yīng)該還是以flash為主。與之相比,js的好處是可與網(wǎng)站無縫連接,也不需要安裝插件。當(dāng)然了,只要是好玩實(shí)用的游戲,即使是用js開發(fā)的,也未嘗不可。

相關(guān)文章

最新評(píng)論