中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)頁制作 > js實現(xiàn)單機雙人象棋演示及其分析
理解表現(xiàn)和結(jié)構(gòu)相分離 回到列表 DreamweaverMX實現(xiàn)網(wǎng)站批量更新
 js實現(xiàn)單機雙人象棋演示及其分析

作者:桃花島主 時間: 2004-09-08 文檔類型:原創(chuàng) 來自:藍(lán)色理想

本程序?qū)崿F(xiàn)的功能為本地二人對弈中國象棋,實現(xiàn)語言為javascript+VML,在windows 2000 pro+IE 6sp1的環(huán)境下測試通過。

程序默認(rèn)的起始顏色為紅色,只有執(zhí)紅色一方可以先走棋,雙方輪流下棋,老將被吃則認(rèn)為輸棋,棋局結(jié)束,可以通過刷新頁面重新開始。

下棋的時候,點擊要走的棋子,將顯示當(dāng)前可走位置(小矩形)和可吃位置(加上紅色框標(biāo)記),然后點擊對應(yīng)位置即可走棋。如果要改選其他棋子,直接點擊即可。

程序的演示地址:
http://island.vip14.dig86.com/chess/chess.htm

設(shè)計概述:
在一個復(fù)雜的、有界面、有交互的程序中,將控制模塊與表現(xiàn)模塊區(qū)分,分別編寫是很有效的做法。這樣能夠使對界面、運算等的操作集中統(tǒng)一,便于修改與測試。
在整體設(shè)計上,本程序采用了將判斷可行位置算法下放的做法。傳統(tǒng)的象棋程序一般先取得欲移動棋子類型,然后由統(tǒng)一的算法判斷目標(biāo)位置是否可行。本程序把判斷目標(biāo)位置是否合法的方法下放到棋子,控制模塊在判斷當(dāng)前走法合法性的時候,取得這個棋子對象,并且調(diào)用此對象的canGo方法來判斷目標(biāo)位置是否可行,這種做法比較有利于讓程序充分體現(xiàn)面向?qū)ο筇匦浴?BR>
棋盤單獨作為一個模塊實現(xiàn),它具有一定規(guī)模,且實現(xiàn)了一個針對性比較強的功能,因此將它與其他模塊隔離,單獨編寫。這個模塊的主要事件集中在圖形化效果的表現(xiàn),同時也應(yīng)當(dāng)主意結(jié)構(gòu)的層次性和合理性,并且應(yīng)當(dāng)向外界提供所生成棋盤的引用,讓控制模塊可以將棋子掛接在這個根元素上。

棋子本質(zhì)為div對象,包含了一個圖標(biāo)文件,并且具有附加屬性,如:顏色、種類、位置等。各種棋子有不少相似屬性,但是具體差別還是不小,比如各棋子的判斷可行位置走法。因此,先編寫一個具有普遍性的棋子模塊,擁有棋子的基本屬性:坐標(biāo)、圖標(biāo)、當(dāng)前是否被攻擊等情況,然后分別對于每種棋子,創(chuàng)建單獨的模塊。這個過程中采用了一種“偽繼承”技術(shù):在單獨的棋子模塊中,創(chuàng)建了一個通用的棋子變量,并且對它附加了一個canGo方法,然后,把這個棋子變量作為自己的創(chuàng)建結(jié)果返回出去。

為什么稱這個為“偽繼承”呢?很明顯,js并不支持繼承,而且,繼承的實現(xiàn)方法并非如此。但是,我們做了繼承所做的事情,即為父類型的對象添加了屬性、方法,因此擴展了它的屬性和方法,并且,最后將擴展完成的對象當(dāng)作自己構(gòu)造出來的對象返回出去,使得結(jié)果對象除了具有父對象的屬性、方法,還擁有自己特有的屬性及方法,因此,我們可以說這是某種形式的繼承。

在程序中建立了一個全局二維數(shù)組situation用于保存棋子列表,各棋子對象存放其自身坐標(biāo)等信息,還定義了各常量用于標(biāo)記棋子顏色、種類等通用信息。

程序中所使用的資源文件有棋子圖標(biāo)及標(biāo)記可走位置的圖標(biāo)。棋盤為VML代碼繪制,各棋子分別置于單個div中,由一個外部的HTC文件控制其行為。這個HTC做了這樣的事情:在點擊當(dāng)前棋子所在的div時,HTC中的check函數(shù)對當(dāng)前點擊對象進(jìn)行處理,決定應(yīng)當(dāng)走棋或者其他操作。

在點擊棋子時,將根據(jù)遍歷棋盤坐標(biāo)代入該棋子canGo方法的結(jié)果,取得可以移動的位置。如果這些位置當(dāng)前沒有棋子,則認(rèn)為是可走位置,在對應(yīng)位置產(chǎn)生一個Blank對象,放置一個提示圖標(biāo)。Blank對象同樣是棋子模塊的偽繼承,它沒有canGo方法,只保存了基本屬性,專門用于標(biāo)志可走位置。如果這些位置當(dāng)前存在棋子,并且棋子的顏色與自身不同,則認(rèn)為是可吃位置,將對應(yīng)棋子加上紅色邊框標(biāo)記,同時將其beAttack屬性設(shè)為真。這樣,走棋的時候即可據(jù)此判斷。

走棋后,程序需要清除以前那些過期的標(biāo)記,這是通過一個遍歷實現(xiàn)的,從棋盤中檢索到灰色對象,即認(rèn)為它是標(biāo)記,直接清除。另外,吃子的實現(xiàn)比較復(fù)雜,反復(fù)嘗試replaceChild方法以后放棄了,因為遇到意想不到的問題,所以通過遍歷檢索來取代被吃棋子。這個步驟似乎可能有比較簡便的實現(xiàn)方法,希望高手指教。

附記:很久以前,在51js論壇看見幻宇前輩的js版星際,就產(chǎn)生做這個象棋的念頭,然后花一個小時參考美洲豹的VML教程寫了棋盤,卻因為各種原因擱置了。這次重新?lián)炱饋恚艘惶彀霑r間寫了其他所有部分,測試了一會,沒發(fā)現(xiàn)bug,先發(fā)布出來,給大家玩玩。有興趣的朋友可以繼續(xù)做,做成能夠聯(lián)機的版本,不是很難。此外,我暫時有一個部分沒有設(shè)計,就是老將見面的判斷,有空補上,hoho;镜恼f明就先寫這么多,以后慢慢把各部分代碼加上注釋,發(fā)在這里,大家不要著急啊。

出處:藍(lán)色理想
責(zé)任編輯:紅色黑客

◎進(jìn)入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
JavaScript實用的一些技巧
js 幾種常用的表單輸入判斷
Javascript 表單之間的數(shù)據(jù)傳遞
JS 216網(wǎng)頁安全色調(diào)色板 DW 風(fēng)格
仿 Office 2003 的工具條
作者文章
js實現(xiàn)單機雙人象棋演示及其分析
W3C school HTML教程 CHM幫助
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2