五子棋程序設(shè)計(jì)與系統(tǒng)分析.doc_第1頁(yè)
五子棋程序設(shè)計(jì)與系統(tǒng)分析.doc_第2頁(yè)
五子棋程序設(shè)計(jì)與系統(tǒng)分析.doc_第3頁(yè)
五子棋程序設(shè)計(jì)與系統(tǒng)分析.doc_第4頁(yè)
五子棋程序設(shè)計(jì)與系統(tǒng)分析.doc_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式項(xiàng)目作業(yè)五子棋程序設(shè)計(jì)與系統(tǒng)分析 作 者 姓 名: 專業(yè)、班級(jí) : 學(xué) 號(hào) : 指 導(dǎo) 教 師: 完 成 日 期: 2013年06月20 日 目錄一系統(tǒng)分析與總體設(shè)計(jì)31.1開發(fā)背景及其開發(fā)意義31.2需求分析31.2.1 功能需求31.2.2 界面設(shè)計(jì)需求41.3總體設(shè)計(jì)41.3.1開發(fā)環(huán)境描述41.3.2系統(tǒng)總體功能設(shè)計(jì)51.3.3游戲界面設(shè)計(jì)61.3.4操作設(shè)計(jì)7二系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)72.1算法實(shí)現(xiàn)72.1.1使用到的主要數(shù)據(jù)結(jié)構(gòu)72.1.2使用到的主要函數(shù)82.2程序流程圖8三系統(tǒng)實(shí)現(xiàn)與調(diào)試103.1調(diào)試過(guò)程中錯(cuò)誤信息和解決方法103.2調(diào)試過(guò)程:程序時(shí)間流程中的解決方法103.3系統(tǒng)運(yùn)行的結(jié)果11四總結(jié)13五附錄(主要代碼)13六參考文獻(xiàn)13一系統(tǒng)分析與總體設(shè)計(jì)1.1開發(fā)背景及其開發(fā)意義五子棋是一種兩人對(duì)弈的純策略型棋類游戲,棋具與圍棋通用,是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一。相傳中華民族的祖先軒轅黃帝無(wú)意之中畫下了十七條橫線十條豎線,這無(wú)意中的發(fā)明造就出了五子棋。后來(lái),中國(guó)古代的五子棋先由中國(guó)傳到高麗(今朝鮮),然后傳到日本。20世紀(jì)初傳統(tǒng)五子棋及連珠從日本傳入歐洲。許多國(guó)家的人對(duì)五子棋都有不同的愛稱,例如,韓國(guó)人把五子棋稱為“情侶棋”;歐洲人稱其為“紳士棋”,代表下五子棋的君子風(fēng)度勝似紳士;日本人則稱其為“中老年棋”,說(shuō)明五子棋適合中老年人的生理特點(diǎn)和思維方式;美國(guó)人喜歡將五子棋稱為“商業(yè)棋”,也就是說(shuō),商人談生意時(shí)可邊下棋邊談生意,棋下完了生意也談成了。由于五子棋游戲規(guī)則簡(jiǎn)單易懂,老少皆宜,而且趣味橫生,引人入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。已在各個(gè)游戲平臺(tái)有應(yīng)用?;赪indows的游戲設(shè)計(jì)方式很多,如基于Java的跨平臺(tái)設(shè)計(jì),基于.net平臺(tái)的設(shè)計(jì),基于JAVA的設(shè)計(jì)由于運(yùn)行在虛擬機(jī)上運(yùn)行,等等。嵌入式系統(tǒng)根據(jù)應(yīng)用需求滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積等要求,提高了運(yùn)行效率。本文采用EVC在ARM平臺(tái)上進(jìn)行設(shè)計(jì)來(lái)完成五子棋游戲。1.2需求分析1.2.1 功能需求 實(shí)現(xiàn)游戲界面的顯示; 顯示用戶行程,提示用戶下子; 查看用戶的輸入是否出界; 實(shí)現(xiàn)悔棋功能; 實(shí)現(xiàn)新一局游戲開始功能; 判斷每局游戲輸贏; 用戶選擇是否開始新一盤五子棋游戲; 退出游戲。1.2.2 界面設(shè)計(jì)需求 顯示游戲運(yùn)行界面,棋盤大小規(guī)格為15*15; 根據(jù)功能需求,顯示新游戲和悔棋按鈕; 系統(tǒng)和用戶需要用不同的顏色的棋子,最后以紅色棋子顯示贏家。1.3總體設(shè)計(jì)1.3.1開發(fā)環(huán)境描述隨著個(gè)人掌上電腦Pocket PC、智能手機(jī)及工業(yè)控制器等各種嵌入式產(chǎn)品的不斷發(fā)展,人們對(duì)Microsoft Windows CE也越發(fā)關(guān)注起來(lái),使用WinCE可以成為新一代智能設(shè)備設(shè)計(jì)高性能的應(yīng)用程序。五子棋游戲軟件基于ARM的wince5.0平臺(tái),利用PXA270RP實(shí)驗(yàn)箱模擬仿真器,利用EVC編程來(lái)具體實(shí)現(xiàn),在實(shí)驗(yàn)箱的觸摸屏上進(jìn)行游戲。嵌入式系統(tǒng)作為芯片和軟件的集成體,在科學(xué)研究、工業(yè)控制、軍事技術(shù)、醫(yī)療衛(wèi)生、消費(fèi)電子等方面有著普遍的應(yīng)用,此軟件基于ARM處理器和windows CE 的研究平臺(tái),windows CE是由優(yōu)先級(jí)的多任務(wù)操作系統(tǒng)它允許多重功能、進(jìn)程,在相同的時(shí)間系統(tǒng)中運(yùn)行Windowns CE 支持最大的32位同步進(jìn)程,微軟Windowns CE被設(shè)計(jì)成針對(duì)小型設(shè)備的通用操作系統(tǒng),它可以通過(guò)設(shè)計(jì)一層位于內(nèi)核和硬件之間代碼來(lái)設(shè)定硬件平臺(tái)。嵌入式工具包包括設(shè)備驅(qū)動(dòng)器(DDK)和軟件開發(fā)包(SDK),DDK提供了關(guān)于寫驅(qū)動(dòng)器的附加文本,SDK提供庫(kù)、頭文件、樣本代碼、文本以允許,開發(fā)者對(duì)基于Windowns CE的平臺(tái)進(jìn)行寫操作,Windowns CE提供了相同的程序界面,以用來(lái)為其他的視窗操作系統(tǒng)開發(fā)功能。技術(shù)可行性運(yùn)用Windows2000/XP以上的操作系統(tǒng),SQL SERVER2000的數(shù)據(jù)庫(kù)技術(shù),開發(fā)以Windows XP為用戶的操作平臺(tái),界面友善、功能齊全的五子棋雙人對(duì)戰(zhàn)小游戲。經(jīng)濟(jì)可行性一方面,新系統(tǒng)中棋盤界面和更強(qiáng)勁的功能支持,不僅增加了游戲的趣味性,而且使游戲者更盡興;另一方面系統(tǒng)開發(fā)成本低,現(xiàn)有PC機(jī)即可提供該系統(tǒng)開發(fā)工作需要的所有硬件設(shè)備環(huán)境。操作可行性操作上是鍵盤的使用,主要憑借輸入坐標(biāo)確定棋子落子位置,方便簡(jiǎn)單。使用前只要看明白游戲規(guī)則及其方法即可。1.3.2系統(tǒng)總體功能設(shè)計(jì)游戲開始時(shí),由用戶開局,將一枚棋子落在棋盤一坐標(biāo)上,然后由電腦落子,如此輪流下子,直到某一方首先在棋盤的豎、橫或斜三方向上的五子連成線,則該方該局獲勝;在下棋途中可以悔棋,也可以從新開局。如圖1-1所示是五子棋總體設(shè)計(jì)功能圖。圖1-1 五子棋總體設(shè)計(jì)功能圖1.3.3游戲界面設(shè)計(jì)游戲界面設(shè)計(jì)包括:游戲界面的布局,分偉三大板塊,分別是游戲顯示界面,左下角是新游戲開始按鈕,右下角是悔棋按鈕。如圖1-2所示,游戲界面設(shè)計(jì)圖:圖1-2游戲界面設(shè)計(jì)圖圖1-3游戲界面設(shè)計(jì)圖1.3.4操作設(shè)計(jì)游戲開始:打開游戲,用戶可以直接進(jìn)入游戲,由用戶首先開始下棋。游戲進(jìn)悔棋操作:用戶可以點(diǎn)擊“悔棋”按鈕,取消前一步所下的棋子,重新落子。游戲開始新游戲操作:用戶可以點(diǎn)擊“新游戲”按鈕,重新開始新一輪的游戲。游戲結(jié)束操作:游戲結(jié)束時(shí),用戶可以選擇是否開始新一輪游戲。二系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)2.1算法實(shí)現(xiàn)2.1.1使用到的主要數(shù)據(jù)結(jié)構(gòu) wzwin表示哪方獲勝的情況,當(dāng)inner=0時(shí)還未確定哪方獲勝,inter=1,白子獲勝,inter=2黑子獲勝。struct wzwinint winner;int nx1;int nx2;int ny1;int ny2; Wzsave保存下棋記錄,即(ix,iy)這個(gè)坐標(biāo)是否使用,used=0未使用,used=1已使用,colour表示此處棋子的顏色。struct wzsavebool used;bool color;int ix;int iy;2.1.2使用到的主要函數(shù)開始新游戲的函數(shù):void NewGame();畫棋子void DrawQZ(int nx,int ny,bool style);當(dāng)需要畫棋盤時(shí)調(diào)用void draw();繪圖所用到的函數(shù)黑色下子bool userAd(int nx,int ny);白色下子bool userBd(int nx,int ny);bool downzi(int nx,int ny);/外部調(diào)用此函數(shù)下子判斷勝敗函數(shù)bool bewinner2(bool style,int nx,int ny);用戶悔棋函數(shù)bool goback();設(shè)置棋子類型void setback(int nx,int ny,bool style);用戶是否可以悔棋判斷函數(shù)bool getbackble()。2.2程序流程圖如下圖2-1所示,為程序流程圖:圖2-1五子棋程序流程圖三系統(tǒng)實(shí)現(xiàn)與調(diào)試3.1調(diào)試過(guò)程中錯(cuò)誤信息和解決方法開發(fā)五子棋程序中,遇到的問(wèn)題及技術(shù)難題如下:錯(cuò)誤信息:C:UsersqingxueDesktop brickbrick.rc(10) : fatal error RC1015: cannot open include file afxres.h. 解決方法:C:WINCE500OTHERSMFCINCLUDE路徑添加到Microsoft eMbedded Visual C+ 4.0中ToolsOptionsDirectoriesinclude files下即可。錯(cuò)誤信息:LINK : fatal error LNK1104: cannot open file mfcs42d.lib解決方法:C:WINCE500OTHERSMFCLIBX86路徑添加到Microsoft eMbedded Visual C+ 4.0中ToolsOptionsDirectoriesLibrary files下即可。3.2調(diào)試過(guò)程:程序時(shí)間流程中的解決方法 首先,建立盤面,用函數(shù)void draw()畫棋盤,然后初始化顯示器、鍵盤、鼠等輸入輸出設(shè)備并在屏幕上畫出棋盤(棋盤可以不顯示)。 當(dāng)輪到用戶(即黑子)下時(shí),您通過(guò)鍵盤或鼠標(biāo)在棋盤上落子,程序會(huì)根據(jù)該點(diǎn)的位置,在map1515數(shù)組的相應(yīng)地方記錄1,以表明該子是用戶下的;當(dāng)輪到系統(tǒng)(即白子)下時(shí),您通過(guò)鍵盤或鼠標(biāo)在棋盤上落子,程序會(huì)根據(jù)該點(diǎn)的位置,在map1515數(shù)組的相應(yīng)地方記錄2,以表明該子是系統(tǒng)下的。 當(dāng)有棋子落下時(shí),調(diào)用 void DrawQZ()畫棋子函數(shù)在棋盤上畫出。 bool downzi()外部調(diào)用此函數(shù)下子,控制下棋順序,當(dāng)輪到某方下子時(shí),負(fù)責(zé)將程序轉(zhuǎn)到相應(yīng)的模塊中去。 盤面分析填寫棋型表用戶在下五子棋時(shí),一定會(huì)先根據(jù)棋盤上的情況,找出當(dāng)前最重要的一些點(diǎn)位,如“活三”、“沖四”等;然后再在其中選擇落子點(diǎn)。我們從棋盤左上角出發(fā),向右逐行搜索用戶棋型表,當(dāng)遇到一個(gè)空白點(diǎn)時(shí),以它為中心向左挨個(gè)查找,如果遇到己方的子則記錄然后繼續(xù),如果遇到對(duì)方的子、空白點(diǎn)或邊界就停止查找。左邊完成后再向右進(jìn)行同樣的操作;最后把左右兩邊的記錄合并起來(lái),得到的數(shù)據(jù)就是該點(diǎn)橫向上的棋型,然后把棋型的編號(hào)填入到儲(chǔ)存棋局中unsigned char userxyn表示用戶棋局; unsigned char pc15154 表示系統(tǒng)棋局;(x、y代表坐標(biāo),n=0、1、2、3分別代表橫、豎、左斜、右斜四個(gè)方向),而其他三個(gè)方向的棋型也可用同樣的方法得到,當(dāng)搜索完整張棋盤后,用戶棋型表也就填寫完畢了。 對(duì)方落子有了上面填寫的兩張棋型表,就是遍歷棋型表user15154和pc15154找出其中數(shù)值最大的一點(diǎn),在該點(diǎn)下子即可。但這種算法的弱點(diǎn)非常明顯,只顧眼前,不能顧全大局,這就和許多五子棋初學(xué)者一樣犯了目光短淺的毛病。如果在這兒下子將會(huì)形成對(duì)手不得不防守的棋型,例如:沖四、活三,那么下一步對(duì)手就會(huì)照您的思路下子來(lái)防守您,如此一來(lái)便完成了第一步的預(yù)測(cè)。這時(shí)再調(diào)用模塊4對(duì)預(yù)測(cè)后的棋進(jìn)行盤面分析,如果出現(xiàn)了四三、雙三或雙四等制勝點(diǎn),那么己方就可以獲勝了;否則照同樣的方法向下分析,就可預(yù)測(cè)出第二步、第三步要是盤面上沒有對(duì)手必須防的棋型,那么進(jìn)攻不成的話就得考慮防守了,將自己和對(duì)手調(diào)換一下位置,然后用上面的方法來(lái)預(yù)測(cè)對(duì)手的棋,這樣既可以防住對(duì)手巧妙的攻擊,又能待機(jī)發(fā)動(dòng)反擊。3.3系統(tǒng)運(yùn)行的結(jié)果點(diǎn)擊游戲界面上的開始按鈕,用戶就可以進(jìn)行游戲的一系列操作。圖3-1游戲圖圖3-2游戲圖圖3-3游戲圖四總結(jié)在系統(tǒng)分析階段,針對(duì)五子棋游戲,將整個(gè)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論