計算機科學與技術畢業設計(論文)藏族圍棋的設計與實現_第1頁
計算機科學與技術畢業設計(論文)藏族圍棋的設計與實現_第2頁
計算機科學與技術畢業設計(論文)藏族圍棋的設計與實現_第3頁
計算機科學與技術畢業設計(論文)藏族圍棋的設計與實現_第4頁
計算機科學與技術畢業設計(論文)藏族圍棋的設計與實現_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、青海民族大學畢 業 論 文(設計)題 目: 藏族圍棋軟件的設計與實現 作 者: 畢業屆期: 2011屆 指導教師: 單 位: 青海民族大學計算機學院 專 業: 計算機科學與技術 2011年5月11日0摘 要本文對藏族圍棋這個由傳統棋類游戲與現代計算機技術想結合的產物進行研究討論。綜合討論了藏族圍棋的一些重要規則,走棋方式。及與計算機結合中產生的一些特殊功能及技術問題探討。并著重對智能棋手的人工智能技術進行較為深入的研究,分析了藏族圍棋游戲在人工智能方面取得的成就及不足。最后分析介紹了本藏族圍棋軟件的設計方案,具體實現方法,及提出重點難點分析,解決藏族圍棋游戲的規則算法問題。關鍵詞:圍棋,藏族圍

2、棋, vb2005目 錄第一章 概述.2 1.1選題意義.21.2藏族圍棋的研究現狀.21.3藏族圍棋的歷史.21.4民間藏族圍棋與網絡圍棋軟件的異同.3第二章 開發工具介紹2.1 visual b 介紹.4 2.2 visual basic 介紹.5第三章 藏族圍棋軟件的需求分析與總體設計.63.1 需求分析.6 3.2 總體設計.7第四章 藏族圍棋軟件的詳細設計.8 4.1界面.84.2 界面的背景.94.3 規則.94.4 藏族圍棋的棋盤.114.5藏族圍棋的棋子及畫法.13第五章 藏族圍棋軟件的夾棋的設計與實現 5.1 走子.85.2 吃子.95.3 夾子.95.4 剔.11第六章 結

3、論及體會6.1 不足與改進.14 6.2 經驗總結.6.3 開發體會.參考文獻.致謝.青海民族大學學士學位論文 第一章 概述第一章 概述1. 1 選題意義以保護藏族圍棋、發揚藏族圍棋、傳承藏族圍棋的理念,在這種愛者甚微、知者無幾的危機下及擺脫瀕臨失傳的險境,就得必須有很好的保護辦法,為此本人欲把藏族圍棋這一歷史悠久的民間棋藝實現在計算機上的同時保護棋譜及文化內涵等幾方面的思路。1.2 藏族圍棋的研究意義“密芒”和“久”構成了藏棋的完整體系,而藏族宗教崇尚白色的習俗一直保留至今,人們走棋時白子先行就是這一文化的明證。在遙遠的年代,藏族人民把一種簡單的黑白棋演繹出如此眾多的行棋規則,這在世界上也是

4、罕見的。“密芒”保留了中國古老圍棋的12個座子,透露出遠古的神秘信息;古老的“久”棋中則以擺放圖形為決勝核心,這也是青海藏族棋藝中十分獨特的一點,它的下法是不吃不叫不提,而是雙方盡其所能擺出圖形,圖形有“槍”“靴”“褡褳”等,圖形又分單、雙兩種,以雙為重,這從另一個側面反映出了古人類的某些思維特征和藏民族唯美主義的文化傾向。凡此種種均為研究中國圍棋及競技活動的發展提供了鮮活的史料,為深入研究中國棋藝的誕生和發展都是難能可貴、彌足珍貴的財富。1.3 藏族圍棋的歷史藏族圍棋是藏民族的一種傳統游戲方式,而以黑白子在縱橫交錯的棋盤上應對的盤上游戲多種,其中與中國傳統的圍棋形式最為接近的是在藏語中稱為“

5、密芒”的棋類游戲。“密芒”與中國傳統圍棋有著諸多的相似之處,“密芒”是藏族棋類游戲中歷史最悠久的、最具影響的游戲種類,所以當之無愧地被人們稱為“藏圍棋”,除此之外藏民族中流傳的“久”也與中國傳統圍棋相近似。在藏語中“密芒”的“密”為眼睛的意思,而“芒”則是眾多之意,連起來就是多眼的戰爭之戰,所以“密芒”又被稱為“多眼棋”、 “多目之戲”,用來形容下棋時需要眼睛隨時看著棋盤,也有在同時和幾位棋手下棋時兼顧各方質疑。因為密芒與中國圍棋有諸多相似之處,但又明顯地與先進了解藏族圍棋的相關情況,特別是對藏族圍棋與中國圍棋的關系等問題進行探索,這里從體育文化的角度對相關問題進行一些探討。1.4 民間藏族圍

6、棋與藏族圍棋軟件的異同如今本小組開發的藏族網絡圍棋軟件僅提供了 “雙人模式”。因為“人機模式”對當今處于知者無幾的危機下及擺脫瀕臨失傳的險境的藏族圍棋來說傳播和傳承能力相對于網絡雙人模式來說較小、雖然計算機按照事先編寫好的算法程序來進行下棋;但開發“雙人模式”的意義極其重大,兩個人不單可以通過異地計算機之間來進行下棋,還可以交替使用同一臺計算機來進行下棋。故而也叫藏族圍棋軟件。隨著計算機網絡的迅猛發展,異地計算機之間的通信變得十分便捷。這也為異地間的用戶通過網絡來進行下棋提供了可能。藏族圍棋軟件利用tcp/ip協議,在異地的玩家之間建立起tcp連接,并用它來交換棋局的各種數據信息。所以,網絡藏

7、族圍棋棋軟件在下棋以前必須要對相關的網絡參數進行設置,才能實現玩家雙方的成功連接。連接成功后,玩家雙方輪流下棋,并將每一步下棋的信息通過網絡傳送給對方,使得雙方棋盤上的棋子保持一致。與生活中的藏族圍棋相同,藏族圍棋軟件也提供了“認輸”、“和棋”和“悔棋”等功能。但這些功能的都是通過網絡來實現的,所以,實現過程較生活中的要復雜。在勝負判別方面,民間圍棋與藏族圍棋軟件并沒有什么不同,只是網絡版的玩家雙方各自有一套勝負判別的程序。當一方玩家下一步棋后,他的勝負判別程序就執行一次,然后再將落子的信息傳送給對方,對方的勝負判別程序也將執行一次。這樣就完成一次勝負的判別過程。另外,藏族圍棋軟件的雙方可能相

8、距邀遠,雙方的語言交流沒有單機版方便。所以,藏族圍棋軟件還必須提供聊天功能。青海民族大學學士學位論文 第三章 藏族圍棋軟件的需求分析與總體設計第二章 開發工具介紹2.1 visual basic.net 介紹visual basic.net 是從 visual basic 語言演變而來的,是一種為高效地生成類型安全和面向對象的應用程序而設計的語言。visual basic 允許開發人員開發面向 windows、web 和移動設備的程序。與所有面向 microsoft .net framework 的語言一樣,使用 visual basic 編寫的程序都具有安全性和語言互操作性方面的優點。這一代

9、 visual basic 延續了為您提供一種簡單快捷的方法來創建基于 .net framework 的應用程序的傳統。vb.net的簡介vb.net是微軟最新平臺技術,是.netframeworksdk的一種語言。vb.net和vc#.net在功能上沒有區別。編譯以后生成的可執行文件被稱為assembly,即程序集。vb.net的版本號是visualbasic7.0,它的運行是建立在clr(commonlanguageruntime)和msil(microsoftintermediatelanguage)虛擬器上的。其實,它的機制和java差不多。vb.net的特點 1.真正成為面向對象以及

10、支持繼承性的語言。2.窗體設計器支持可視化繼承,并且包含了許多新的特性,比如自動改變窗體大小、資源本地化支持、數據類工具內在支持xml數據。3.直接建立在.net的框架結構上,因此開發人員可以充分利用所有.net平臺特性,也可以與其他的.net語言交互。4.為windows應用程序提供了xcopy部署,開發者不再需要為dll的版本問題擔憂。vb.net的語言特點: 1.代碼托管。被托管的代碼享受.netframework提供的安全保障和垃圾回收機制,但是這也同時表明,你的程序被框在framework里面了。api變得不太方便。2.強大的面向對象特性?,F在vb7已經是一個完全的面向對象程序?,F在

11、vb7已經支持類的各種特性:繼承,函數的覆蓋,重載,虛擬,隱藏3.功能強大,程序界面更標準。4.程序代碼結構化更強,開發環境舒適體貼。vb.net常常被人稱為vb7.0即對vb6的升級是不對的,幾乎在.net中的思想已經完全改變了,vb6中是基于事件和對象的思想,而在.net中由于使用了.net框架,并且ms為了將新的編譯環境與潮流接軌,面對對象在.net中尤為突出,用過6的朋友們都很清楚,在6中過程的思想還能運用,但是在.net中過程的思想已經完全的被oop的思想取代了。也許這樣說你也不太明白,我用一句話來解釋,就是vb6及其以前的產品是dos時代到windows可視化時代的一個轉變,vb.

12、net是為建造基于因特網的分布式計算的新時代的解決方案提供基礎構造的一個轉變。因此,對于目前的仍比較普遍的win32環境來講vb.net并沒有比vb6有什么進步。2.2 visual basic 介紹visual basic(vb)是一種由微軟公司開發的包含協助開發環境的事件驅動編程語言。從任何標準來說,vb都是世界上使用人數最多的語言不僅是盛贊vb的開發者還是抱怨vb的開發者的數量。它源自于basic編程語言。vb擁有圖形用戶界面(gui)和快速應用程序開發(rad)系統,可以輕易的使用dao、rdo、ado連接數據庫,或者輕松的創建activex控件。程序員可以輕松的使用vb提供的組件快速

13、建立一個應用程序。vb的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似于操作系統的樣子。有很少功能的對話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。 vb的組件既可以擁有用戶界面,也可以沒有。這樣一來服務器端程序就可以處理增加的模塊。 vb使用參數計算的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向對象支持。因為越來越多組建的出現,程序員可以選用自己需要的擴展庫。和有些語言不一樣,vb對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態,以及強制使得符號表入口的實體的變量名稱遵循書寫規則。默認情況下字符串的比較是對大小寫敏感的,但是可以關閉

14、這個功能。 第三章 藏族圍棋軟件的需求分析與總體設計3.1 需求分析軟件的需求分析是軟件生存期中重要的一步,也是決定性的一步。只有通過需求分析才能把軟件功能和性能的總體概念描述為具體的軟件需求規格說明,從而奠定軟件開發的基礎。在此階段,了解用戶要求本軟件必須滿足的所有功能和限制,以及用戶對軟件功能和性能的要求,弄清用戶想要軟件“做什么”,準確地表達用戶的要求。功能需求能通過網絡進行下棋符合藏族圍棋的基本規則提供“認輸”、“和棋”、“悔棋”等功能提供水平坐標和垂直坐標功能提供玩家之間的聊天功能有背景音樂提供多種背景環境需求10/10mbps共享式hub一臺裝有windows95/98/nt/xp

15、操作系統的計算機兩臺計算機的cpu不低于pii450,內存不小于64m10/10mbps自適應網卡每臺計算機各一塊,sb兼容聲卡各一塊,5類雙絞線若干米每臺計算機都應配置有tcp/ip協議用戶接口需求界面友好、親切接口簡潔、不花哨操作接口直觀、不繁瑣異常處理需求當埠號沖突時,錯誤提示并可重新輸入當出現錯誤行列時,此次操作無效如果網絡非正常斷開,則終止此局3.2 總體設計在需求分析結束后,已經弄清楚了軟件的各種需求,較好地解決了用戶要軟件“做什么”的問題,接下來就將著手實現軟件的需求,即要著手解決“怎么做”的問題。在這個階段著重實現需求的程序模塊設計問題,并將需求轉化為軟件的系統結構,進行模塊的

16、劃分,確定每個模塊的功能、接口及模塊之間的調用關系。根據需求分析制訂出整個軟件的系統結構圖,如圖2.1所示:圖2-1系統結構圖青海民族大學學士學位論文 第四章 藏族圍棋軟件的詳細設計4.1 界面根據用戶對接口的需求,接口被設計得十分簡潔,并沒有作過多的修飾。如圖3-1所示:4.2 更換背景4.3 規則第(1)條:藏族圍棋圍棋的下法: 對局雙方各執一色棋子。 空枰開局。 白先黑后,交替著一子于棋盤的點上。 棋子下完后,可向其他點移動。 第(3)條:藏族圍棋的夾法夾在自己的棋子與棋子之間有對方的棋子則成為自己的棋子(新棋)。同理剛下的新棋與原有的棋子間被夾的對方棋子都稱為自己的棋子。第(4)條:藏

17、族圍棋的打搶法縱橫線或斜線上的任意“頭”上有對方的棋子,但在這一線上其余的所有點上有自己的棋子則將對方的棋子成為自己的棋子,這稱為“打槍” ,“打槍”分為“短槍”、“長槍”等第(5)條:藏族圍棋的走棋法除棋盤中央的“路口”外的所有點被棋滿完,才開始走棋,最初下棋的一方先行走棋。第(6)條:讓路 如任意一方將對方的“路口”被封則重新給對方讓路,在讓路是可進行夾棋,但不許故意將對方的路口的封死。第(7)條:計算勝負及終局 一方將對方的全部棋子夾完時,為終局。 一方無棋子可走時,游戲結束,棋多者勝。 對局中有一方中途認輸時,為終局。4.4藏族圍棋的棋盤常見棋盤有三種,棋盤中心點稱為首府。 五橫五豎的

18、橫縱線交叉,另有東南-西北向、西南-東北向的斜線各七條,組成共四十一個棋點。七橫七豎的橫縱線交叉,另有東南-西北向、西南-東北向的斜線各十一條,組成共八十五個棋點。九橫九豎的橫縱線交叉,另有東南-西北向、西南-東北向的斜線各十五條,組成共一百四十五個棋點。雙方棋子數等于全部棋點數,以兩色區分敵我。本款軟件的棋盤由縱橫各條等距離、垂直交叉的平行線加各格子的對角線構成。形成41個交叉點。 棋盤整體形狀以及每個格子縱、橫向相等且由對角線連起來。 在棋盤邊上標有三個小圓點各依次稱為頭、肩子等,中央的星又稱“路口”,見下圖1. 圖表 1 棋盤格子矢量圖 4.5藏族圍棋的棋子及畫法 棋子 棋子分黑白兩色。

19、 旗子的畫法:根據情況的不同,棋子的種類共有以下四種:頂角坐標計算:要想在棋盤的正確位置上畫出棋子,首先確定棋子所在的頂角坐標。從圖中我們不難找規律。棋盤左上角的棋子的頂角坐標一旦確定,那么其它位置上的棋子的頂角坐標也將很容易的求得。例如:34-9=25,可見,相差為棋盤橫縱線的間距。所以,可以得到這樣一個頂角坐標公式:(i - 1) * 25 + 9;(j - 1) * 25 + 9棋子邊緣的清除:從棋子圖中我們看到,棋子的四周都有邊框。如下圖中的陰影部分:這些邊框在游戲中是我們不想見到的,所以,必須將其清除掉。首先,使用paintpicture,讓棋子圖中的mask與棋盤待放棋子處進行“與

20、”操作 form1.picture1.paintpicture form1.picture2.picture, (i - 1) * 25 + 9, (j - 1) * 25 + 9, 25, 25, 100, 0, 25, 25, vbsrcand然后,再使用paintpicture,讓棋子圖中的棋子與棋盤待放棋子處進行“或”操作 form1.picture1.paintpicture form1.picture2.picture, (i - 1) * 25 + 9, (j - 1) * 25 + 9, 25, 25, (map(i, j, 1) - 1) * 25, 0, 25, 25, v

21、bsrcpaint旗簍的畫法:棋簍的畫法與旗子畫法相同,只是頂角的坐標不同而已。它的頂角坐標無需計算,只是要在背景圖片上測量出來即可。第五章 藏族圍棋軟件的夾棋的設計與實現5.1走子(1).輪流移動一枚己棋,沿線一步。 (2)代碼public sub go(byval x0 as int16, byval y0 as int16, byval x1 as int16, byval y1 as int16) dim change as xx dim i as int16 if isruler(x0, y0, x1, y1) and chess(x0, y0).direct(0).self = 2

22、 and chess(x1, y1).direct(0).self 2 then change.value = chess(x0, y0).direct(0).self msgbox(isruler(x0, y0, x1, y1) stack.enqueue(change) end if end sub5.2吃子(1).無論是下子或走子階段,只要己方棋子排成以下兩種排列就把該一枚敵子提出交回對手,并在該棋位補放一枚己子。如果新補的棋子又造成吃子,則繼續反復。 (2)代碼while stack.count 0 change = stack.dequeue() for i = 1 to 4 fla

23、g = false if chess(change.x, change.y).direct(i).self -1 and chess(change.x, change.y).direct(0).self 2 and change.value -1 and change.value 2 then dim h1, h2 as int16 h1 = chess(change.x, change.y).direct(i).x h2 = chess(change.x, change.y).direct(i).y if (chess(h1, h2).direct(i).self -1) and (ches

24、s(h1, h2).direct(0).self 2) and (chess(h1, h2).direct(0).self = (change.value + 1) mod 2) then dim hh1, hh2 as int16 hh1 = chess(h1, h2).direct(i).x hh2 = chess(h1, h2).direct(i).y end if end if if chess(change.x, change.y).direct(i + 4).self -1 and chess(change.x, change.y).direct(0).self 2 and cha

25、nge.value -1 and change.value 2 then dim b1, b2 as int16 b1 = chess(change.x, change.y).direct(i + 4).x b2 = chess(change.x, change.y).direct(i + 4).y msgbox(change.x & uu & change.y) msgbox(200) if (chess(b1, b2).direct(i + 4).self -1 and chess(b1, b2).direct(0).self 2) and (chess(b1, b2).direct(0)

26、.self = (change.value + 1) mod 2) then stack.enqueue(y) flag = true if i 4 then end if exit for end if end if end if5.3夾(1).造成兩枚己棋在一條直或斜線上夾住一枚敵棋。5.4剔(1).造成一條直或斜線除端點有一枚敵棋外,其余均屬己棋。第六章 結論及體會6.1 不足與改進本軟件和其它藏族圍棋軟件相比在功能和性能還是存在著比較大的差距的,例如:只有知道主機的ip地址和端口號才能建立連接、第三方不能加入棋局等等。要想設計出更完善的藏族圍棋軟件,仍然需要做大量的工作:服務器的設置。

27、在網絡中將一臺計算機設置成為服務器,服務器的ip地址和端口號是固定不變的,客戶機可以直接連接到服務器上,然后通過服務器選擇對手,這樣就省去了玩家在游戲前必須知道主機的ip地址和端口號的麻煩了。接口需要進一步美化。增加改變字體顏色以及背景顏色功能,增加按鈕閃爍功能等。提高通信的可靠性。在一般情況下,藏族圍棋軟件可以穩定的工作,但是仍不能保證它在任何情況下都不出錯,一旦在網絡傳輸過程中,由于某種原因造成數據丟失,將造成雙方數據不一致,使游戲無法繼續進行下去。因此,因該改善程序的可靠性。擴充功能。增加記錄棋譜功能,以供藏族圍棋愛好者能在日后研究。6.2 經驗總結藏族圍棋軟件的開發讓我經歷了一次前所未

28、有的體驗,讓我真正體會到了“書到用時方恨少”的含義,體會到了厚積薄發的意義所在,這次的開發是對自己所學的知識的一次大考驗,也是對自己潛能的一次挖掘?,F在把一些開發的經驗總結如下:在工程開發中,系統的分析是整個開發的核心,只有前期進行很好的分析、規劃,才能做出好的軟件產品,這個階段要進行很好的策劃,精密的分析。尤其是流程的設計,直接關系到系統功能和編碼的成敗。良好的程序設計風格很重要。這在一個比較大的工程中,程序設計的風格非常重要,這影響到軟件的測試以及后期功能擴展,在增量型的開發模型中,混亂的代碼會使維護變的十分困難。在多人合作團隊開發的時候,你的代碼要影響到全局,所以會有“你的代碼是寫給別人看”的觀點的存在。運用高效的測試手段。測試要占開發很大的時間,軟件編碼以后,并非總能百分百的成功,那就要進行測試。在大程序中,多寫異常處理的代碼,以及變量合法的檢驗等,debug中混合使用斷點測試以及報告函數(messagebox),以提高debug效率。善于捕捉最新的技術資料。在每個軟件開發過程中,數據是必不可少的,雖然書本上有比較系統的數據,但是真正能運用的還是不多。在開發時,不要急于設計編碼,應該學會先查找軟件開發中涉及到的各種最新數據,學習他們關于本系統的一些開發經驗。學會在編碼前,吸取別人的代碼的一些優點,然后改進設計,使之更加的完善。6.3 開發體會軟件的開發是

溫馨提示

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

評論

0/150

提交評論