




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
./《軟件基礎》大作業(yè)項目名稱:五子棋游戲學號:05姓名:校建林朱穎完成時間:20XX11月28日指導教師:魯可目錄一需求分析11.1開發(fā)背景11.2項目目標五子棋與游戲開發(fā)成員和具體日期完成任務以及任務的具體分配....................11.3運行環(huán)境…初始化31.4項目任務書主循環(huán)控制模塊31.5玩家下子31.6盤面分析填寫棋型表31.7對方下子41.8勝負判斷4二技術線路42.1采用的軟件及開發(fā)平臺是什么2.2項目的總體方案—包括模塊及模塊間的聯系、信息流、數據流等2.3項目的詳細設計—包括模塊的功能、數據結構及算法等2.1技術線路模塊圖42.2技術線路說明5三工程進度第三章系統設計53.1流程圖63.2流程圖說明6四程序測試分析74.1階段性測試4.2總體測試五個人總結9附錄源代碼10.五子棋游戲第一章需求分析1.1開發(fā)背景軟件需求分析是軟件開發(fā)周期的第一個階段,也是關系到軟件開發(fā)成敗的關鍵一步。對于任何一個軟件而言,需求分析工作都是至關重要的一步。只有通過軟件需求分析,才能把軟件的功能和性能由總體的概念性描述轉化為具體的規(guī)格說明,進而建立軟件開發(fā)的基礎。實踐表明,需求分析工作進行得好壞,在很大程度上決定了軟件開發(fā)的成敗。軟件需求分析的任務是:讓用戶和開發(fā)者共同明確將要開發(fā)的是一個什么樣的軟件。具體而言,就是通過對問題及其環(huán)境的理解、分析和綜合,建立邏輯模型,完成新軟件的邏輯方案設計?;诒居螒?首先得為整個棋盤建立一表格用以記錄棋子信息,我們使用一個15*15的二維數組Table[15][15]<15*15是五子棋棋盤的大小>,數組的每一個元素對應棋盤上的一個交叉點,用‘0’表示空位、‘1’代表己方的子、‘2’代表對方的子;這表也是今后分析的基礎。在此之后還要為兩個玩家雙方各建立一棋型表Computer[15][15][4]和Player[15][15][4],用來存放棋型數據。1.2項目目標五子棋與游戲開發(fā)具體任務完成日期以及任務的具體分配五子棋游戲開發(fā)成員:校建林、朱穎。五子棋游戲開發(fā)具體的任務步驟:1.需求分析容包括:總體分析、五子棋與游戲開發(fā)成員和具體任務完成日期以及任務的具體分配、初始化、主循環(huán)控制模塊、玩家下子、盤面分析填寫棋型表、對方下子、勝負判斷。2.技術線路容包括:采用的軟件及開發(fā)平臺是什么。項目的總體方案—包括模塊及模塊間的聯系、信息流、數據流等。項目的詳細設計—包括模塊的功能、數據結構及算法等。技術線路模塊圖技術線路模塊圖、技術線路說明。3.系統設計容包括:流程圖、流程圖說明。4.程序測試分析5.總結。6.源代碼。2.具體日期完成任務1.第五周完成任務:完成具體的需求分析中的總體分析、五子棋與游戲開發(fā)成員和具體任務完成日期以及任務的具體分配、初始化、主循環(huán)控制模塊等部分容的任務。2.第六周完成任務:完成具的需求分析中的玩家下子、盤面分析填寫棋型表、對方下子、勝負判斷等部分容的任務。3.第七周完成任務:完成具的功能描述的功能模塊圖、功能說明部分容的任務。4.第八周完成任務:完成具的系統設計的流程圖、流程圖說明部分容的任務。5.第九周完成任務:完成具的程序測試結果部分容的任務。6.第九周完成任務:完成具的五子棋游戲源代碼中的初始化程序任務。7.第九周完成任務:完成具的五子棋游戲源代碼中的主循環(huán)控制模塊程序任務。8.第十周完成任務:完成具的五子棋游戲源代碼中的玩家下子的有關程序任務。9.第十一周完成任務:完成具的五子棋游戲源代碼中的盤面、棋型的有關程序任務。10.第十二周完成任務:完成具的五子棋游戲源代碼中的對方下子的有關程序任務。11.第十二周完成任務:完成具的五子棋游戲源代碼中的整體程序任務。12.第十三周完成任務:完成具的系統設計的流程圖、流程圖說明部分容的任務。13..第十四周完成任務:完成具的程序測試結果以及總結部分容的任務。3.五子棋游戲開發(fā)具體任務的具體分配1.校建林、朱穎共同完成需求分析任務。-2.校建林完成具體的需求分析中的總體分析、五子棋與游戲開發(fā)成員和具體任務完成日期以及任務的具體分配、初始化、主循環(huán)控制模塊等部分容的任務。3.朱穎完成具的需求分析中的玩家下子、盤面分析填寫棋型表、對方下子、勝負判斷等部分容的任務。4.校建林、朱穎共同完成具的功能描述的功能模塊圖、功能說明部分容的任務。5.校建林、朱穎共同完成具的系統設計的流程圖、流程圖說明部分容的任務。6.校建林完成具的程序測試結果部分容的任務。7.校建林、朱穎共同完成具的五子棋游戲源代碼中的初始化程序任務。8.校建林、朱穎共同完成具的五子棋游戲源代碼中的玩家下子的有關程序任務。10.校建林完成具的五子棋游戲源代碼中的玩家下子的有關程序任務。11.朱穎完成具的五子棋游戲源代碼中的盤面、棋型的有關程序任務。12.校建林、朱穎共同完成具的五子棋游戲源代碼中的對方下子的有關程序任務。13.校建林、朱穎共同完成具的五子棋游戲源代碼中的整體程序任務。14.校建林、朱穎共同完成具的系統設計的流程圖、流程圖說明部分容的任務。15.校建林、朱穎共同完成具的程序測試結果以及總結部分容的任務。1.3運行環(huán)境初始化首先,建立盤面數組Table[15][15]、對戰(zhàn)雙方的棋型表Computer[15][15][4]和Player[15][15][4]并將它們清零以備使用;然后初始化顯示器、鍵盤、鼠等輸入輸出設備并在屏幕上畫出棋盤〔棋盤可以不顯示。1.4項目任務書主循環(huán)控制模塊控制下棋順序,當輪到某方下子時,負責將程序轉到相應的模塊中去,主要擔當一個調度者的角色。1.5玩家下子當輪到玩家下時,您通過鍵盤或鼠標在棋盤上落子,程序會根據該點的位置,在Table[15][15]數組的相應地方記錄‘2’,以表明該子是玩家下的。1.6盤面分析填寫棋型表您在下五子棋時,一定會先根據棋盤上的情況,找出當前最重要的一些點位,如"活三"、"沖四"等;然后再在其中選擇落子點。先來分析己方的棋型,我們從棋盤左上角出發(fā),向右逐行搜索,當遇到一個空白點時,以它為中心向左挨個查找,如果遇到己方的子則記錄然后繼續(xù),如果遇到對方的子、空白點或邊界就停止查找。左邊完成后再向右進行同樣的操作;最后把左右兩邊的記錄合并起來,得到的數據就是該點橫向上的棋型,然后把棋型的編號填入到Computer[x][y][n]中就行了〔x、y代表坐標,n=0、1、2、3分別代表橫、豎、左斜、右斜四個方向。而其他三個方向的棋型也可用同樣的方法得到,當搜索完整棋盤后,己方棋型表也就填寫完畢了。然后再用同樣的方法填寫對方棋型表。注意:所有棋型的編號都要事先定義好,越重要的號數越大!1.7對方下子有了上面填寫的兩棋型表,就是遍歷棋型表Computer[15][15][4]和Player[15][15][4]找出其中數值最大的一點,在該點下子即可。但這種算法的弱點非常明顯,只顧眼前利益,不能顧全大局,這就和許多五子棋初學者一樣犯了"目光短淺"的毛病。如果在這兒下子將會形成對手不得不防守的棋型〔例如:‘沖四’、‘活三’;那么下一步對手就會照您的思路下子來防守您,如此一來便完成了第一步的預測。這時再調用模塊4對預測后的棋進行盤面分析,如果出現了‘四三’、‘雙三’或‘雙四’等制勝點,那么己方就可以獲勝了〔當然對黑棋而言‘雙三’、‘雙四’是禁手,另當別論;否則照同樣的方法向下分析,就可預測出第二步、第三步……等一等,要是盤面上沒有對手必須防的棋型,哪該怎么辦呢?進攻不成的話就得考慮防守了,將自己和對手調換一下位置,然后用上面的方法來預測對手的棋,這樣既可以防住對手巧妙的攻擊,又能待機發(fā)動反擊,何樂而不為呢!1.8勝負判斷務須多言,某方形成五子連即獲勝;若黑棋走出‘雙三’、‘雙四’或長連即以禁手判負。第二章技術線路2.1技術線路模塊圖圖2.1功能模塊圖2.2技術線路說明該五子棋程序基本上實現了五子棋的游戲功能,有雙方下棋的界面及最終判定結果的界面。同時該游戲采用二維坐標實現,明了易懂,方便玩家在游戲過程中的基本操作,使游戲更加簡便。在細節(jié)方面,該系統提供實時存儲功能,隨時記錄為完成的游戲,使用戶可以很好的處理意外中斷的情況。該游戲基本實現了游戲的一些要求和特征。在游戲的源程序及文檔方面,我們也嚴格遵守軟件工程思想,立足實驗要求,確定任務,需求分析,設計和編碼,每個步驟力求清晰易懂。原代碼注釋詳盡,各功能模塊功能分明,可移植性強。當然該系統也有很多不足的地方,第一次進行獨立的課程設計,也有很多細節(jié)方面是考慮到的,這款游戲也是在不斷的調試和修改中產生和完善的。希望老師能夠指出不足,幫助我不斷提高。第三章系統設計3.1流程圖圖3.1流程圖3.2流程圖說明本程序定義了各種操作函數、各種狀態(tài)判定宏,思想明確,思路清晰。各個判斷選擇了不同路徑,因此繼續(xù)進行或輸出結果。程序中,"循環(huán)"的利用非常直接和清晰,雙方交替下棋,因此循環(huán)往復。最終決出勝負或最終平局。分析時,也考慮了許多種情況,針對各個情況均作出了相對措施和解決方案。程序采用循環(huán)進行雙方交替下棋,并進行了很多判斷。首先判斷棋盤是否已滿,若棋盤已滿,則輸出平局,結束游戲;若棋盤未滿,則繼續(xù)進行。然后判斷"0”方是否勝出,若"0”方獲勝,則輸出"0”方獲勝,結束游戲;若"0”第四章運行結果圖4.1運行結果初始圖圖4.2游戲過程圖圖4.3游戲進行圖圖4.4"0"方獲勝圖第五章總結附錄一參考文獻[1]嚴蔚敏,吳偉民.數據結構.:清華大學,20XX[2]仕華,韋巍,王敬生,燕君.數據結構課程設計〔第二版.:機械工業(yè),20XX[3]譚浩強.C程序設計〔第二版.:清華大學,1999年[4]譚浩強.C++程序設計.:清華大學,20XX附錄二源代碼#include<iostream.h>usingnamespacestd;intHsheng<chara[][15]>;//判斷o子是否獲勝的函數intBsheng<chara[][15]>;//判斷x子是否獲勝的函數inthe<chara[][15]>;//判斷是否平局〔也就是棋盤下滿了的函數voidqipan<chara[15][15]>//執(zhí)行輸出棋盤命令{cout<<"本游戲采用二維數組實現,棋盤為15X15的二維直角坐標系,均從1到15,祝二位游戲愉快.";for<inti=0;i<15;i++>//打印棋盤{for<intj=0;j<15;j++>cout<<a[i][j];cout<<endl;}}intmain<>{chara[15][15];intx,y;for<inti=0;i<15;i++>for<intj=0;j<15;j++>a[i][j]='';qipan<a>;while<1>//用循環(huán)語句執(zhí)行o,x交替下子,這些while語句看起來似乎是個死循環(huán)~實際上都會經過break結束{inta1=1;while<1>{for<;a1;>{cout<<"請輸入o子下的位置:";//輸入o子的位置cin>>x>>y;if<a[x][y]=='o'||a[x][y]=='x'>//判斷是否已有子{cout<<"已有子請重下"<<",";continue;}elseif<x>=15||y>=15>{cout<<"輸入錯誤請重輸"<<",";continue;}else{a[x][y]='o';a1=0;}}break;}qipan<a>;//下好o子后將棋盤顯示if<Hsheng<a>>//判斷o子是否已經獲勝{cout<<"o子獲勝"<<endl;break;}while<1>//下x子{cout<<"請輸入x子下的位置:";cin>>x>>y;if<a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15>{for<;a[x][y]=='o'||a[x][y]=='x';>{cout<<"已有子請重下";cout<<"請輸入x子下的位置:";cin>>x>>y;continue;}for<;x>=15||y>=15||x;>{cout<<"輸入錯誤請重輸"<<",";//判斷輸入棋子位置是否正確cout<<"請輸入x子下的位置:";cin>>x>>y;continue;}a[x][y]='x';break;}else{a[x][y]='x';break;}}qipan<a>;//再一次輸出棋盤if<Bsheng<a>>//判斷x子是否已經獲勝{cout<<"x子獲勝"<<endl;break;}if<he<a>>//判斷是否平局{cout<<"平局"<<endl;break;}}return0;}intHsheng<chara[][15]>{inti,j;//判斷橫著的5個是否都相等for<i=0;i<15;i++>for<j=0;j<15;j++>if<a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o'>return1;for<j=0;j<15;j++>//判斷豎著的5個是否都相等for<i=0;i<15;i++>if<a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o'>return1;for<i=0;i<15;i++>//判斷左斜5個for<j=0;j<15;j++>if<a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o'>return1;for<i=0;i<15;i++>//右斜5個for<j=14;j>3;j-->if<a[i][j]=='H'&&a[i+1][j-1]=='o'&&a[i+2][j-2]=='o'&&a[i+3][j-3]=='o'&&a[i+4][j-4]=='o'>return1;return0;}intBsheng<chara[][15]>//同o,只是改字符{inti,j;for<i=0;i<15;i++>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文創(chuàng)寄售合同協議書
- 2025企業(yè)辦公樓租賃合同協議樣本
- 2025建筑工程施工勞務合同
- 教育決策與大數據:2025年教育改革與發(fā)展的趨勢分析報告
- 2025年新能源汽車充電設施布局優(yōu)化與運營效率提升產業(yè)布局創(chuàng)新趨勢報告
- 2025采購貿易合同示范文本
- 2025倉庫租賃合同,倉庫租賃合同范本
- 康復醫(yī)療器械市場2025年趨勢預測:產品創(chuàng)新與市場需求動態(tài)分析報告
- 2025年食品行業(yè)深度報告:食品安全追溯與智能監(jiān)管一體化
- 2025工程總承包合同意向書
- 保潔合同協議書模板下載
- 2025年中國低溫等離子體環(huán)境消毒機市場調查研究報告
- 2025法語DELFA15級閱讀理解試卷及答案
- 2025年全球經濟策略試題及答案
- 山東省濟南市商河縣2025屆九年級下學期中考二模語文試卷(含答案)
- 2025年絕緣紙原紙行業(yè)深度研究報告
- 2024年棗莊滕州市中小學招聘教師筆試真題
- 直擊要點2025年入團考試試題及答案
- 基于AI的管道防腐監(jiān)測系統研究與應用-洞察闡釋
- 酒店賓館裝修合同協議書
- 2025-2030年中國腰果酚行業(yè)競爭格局展望及投資前景研究報告
評論
0/150
提交評論