五子棋源代碼(C)完美版_第1頁
五子棋源代碼(C)完美版_第2頁
五子棋源代碼(C)完美版_第3頁
五子棋源代碼(C)完美版_第4頁
五子棋源代碼(C)完美版_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、=WORD完好版-可編寫-專業(yè)資料分享=#include#includeusingnamespacestd;#defineWIDE_AND_LONG20/棋盤的長和寬#defineNAME_LEN20/輸入姓名的長度typedefclassGobangpublic:intInitPlayerName(char*,char*);intCheckInput(char,int);intCheckIndexInput(char,char,char);intGetPlayerName();intInitBoard();intWriteBoard(char,char,bool);intBeginOrNot

2、();intCheckRow();intCheckColumn();intCheckTopLeft();intCheckTopRight();intCheckDownLeft();intCheckDownRight();intCheckDraw();intCheckFinish();intChess();intShowBoard();private:characBoardWIDE_AND_LONGWIDE_AND_LONG;characPlayerOneNameNAME_LEN;characPlayerTwoNameNAME_LEN;GOBANG;/初始化姓名的缺省值intGOBANG:Ini

3、tPlayerName(char*pPlayerOne,char*pPlayerTwo)strcpy(acPlayerOneName,pPlayerOne);strcpy(acPlayerTwoName,pPlayerTwo);return0;/檢查輸入姓名時能否含非法字符空格和Tab鍵intGOBANG:CheckInput(charch,intiNameLen)if(=ch|t=ch)cout含有非法字符!NAME_LEN-1)-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=cout輸入高出限制長度!=0&cRow=9)iRow=static_cast(cRow-0);els

4、eif(cRow=A&cRow=static_cast(A+WIDE_AND_LONG-10-1)iRow=static_cast(cRow-A)+10);elseiRow=static_cast(cRow-a)+10);if(cColumn=0&cColumn=9)iColumn=static_cast(cColumn-0);elseif(cColumn=A&cColumn=static_cast(A+WIDE_AND_LONG-10-1)iColumn=static_cast(cColumn-A)+10);elseiColumn=static_cast(cColumn-a)+10);if(

5、+!=acBoardiRowiColumn)cout此處已有棋子!endl;return-1;if(!bJudge)acBoardiRowiColumn=static_cast(1);else-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=acBoardiRowiColumn=static_cast(2);return0;/檢查坐標(biāo)輸入能否合法intGOBANG:CheckIndexInput(charcRow,charcSeparator,charcColumn)if(!cRow|!cSeparator|!cColumn)return-1;if(!(cRow=0&cRow=A&

6、cRow=static_cast(A+WIDE_AND_LONG-10-1)|(cRow=a&cRow=static_cast(a+WIDE_AND_LONG-10-1)return-1;if(!=cSeparator&t!=cSeparator&,!=cSeparator)return-1;if(!(cColumn=0&cColumn=A&cColumn=static_cast(A+WIDE_AND_LONG-10-1)|(cColumn=a&cColumn=static_cast(a+WIDE_AND_LONG-10-1)return-1;return0;/獲得玩家的昵稱intGOBANG

7、:GetPlayerName()fflush(stdin);charcTemp=0;intiNameLen=0;cout能否自己定義昵稱?是(Y),否(隨意鍵):;cTemp=getch();coutendl;if(y!=cTemp)&(Y!=cTemp)return0;fflush(stdin);memset(acPlayerOneName,0,sizeof(acPlayerOneName);-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=memset(acPlayerTwoName,0,sizeof(acPlayerTwoName);cout請玩家一輸入昵稱:;while(n

8、!=(cTemp=getchar()if(-1=CheckInput(cTemp,iNameLen)fflush(stdin);cout請玩家一輸入昵稱:;continue;acPlayerOneNameiNameLen=cTemp;iNameLen+;if(0=iNameLen)strcpy(acPlayerOneName,玩家一);iNameLen=0;fflush(stdin);cout請玩家二輸入昵稱:;while(n!=(cTemp=getchar()if(-1=CheckInput(cTemp,iNameLen)fflush(stdin);cout請玩家二輸入昵稱:;continu

9、e;acPlayerTwoNameiNameLen=cTemp;iNameLen+;if(0=iNameLen)strcpy(acPlayerTwoName,玩家一);return0;/初始化棋盤intGOBANG:InitBoard()intiRow=0;intiColumn=0;for(iRow=0;iRowWIDE_AND_LONG;iRow+)for(iColumn=0;iColumnWIDE_AND_LONG;iColumn+)-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=acBoardiRowiColumn=+;return0;/檢查棋盤橫向能否存在五子連珠intG

10、OBANG:CheckRow()intiRow=0;intiColumn=0;intiPlayerOneLen=0;intiPlayerTwoLen=0;for(iRow=0;iRowWIDE_AND_LONG;iRow+)while(iColumnWIDE_AND_LONG)if(static_cast(1)=acBoardiRowiColumn)iPlayerOneLen+;iPlayerTwoLen=0;elseif(static_cast(2)=acBoardiRowiColumn)iPlayerTwoLen+;iPlayerOneLen=0;elseiPlayerTwoLen=0;i

11、PlayerOneLen=0;iColumn+;if(iPlayerOneLen=5)return1;if(iPlayerTwoLen=5)return2;iPlayerOneLen=0;iPlayerTwoLen=0;iColumn=0;return0;-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=/檢查棋盤豎向能否存在五子連珠intGOBANG:CheckColumn()intiRow=0;intiColumn=0;intiPlayerOneLen=0;intiPlayerTwoLen=0;for(iColumn=0;iColumnWIDE_AND_LONG;iColumn

12、+)while(iRowWIDE_AND_LONG)if(static_cast(1)=acBoardiRowiColumn)iPlayerOneLen+;iPlayerTwoLen=0;elseif(static_cast(2)=acBoardiRowiColumn)iPlayerTwoLen+;iPlayerOneLen=0;elseiPlayerTwoLen=0;iPlayerOneLen=0;iRow+;if(iPlayerOneLen=5)return1;if(iPlayerTwoLen=5)return2;iPlayerOneLen=0;iPlayerTwoLen=0;iRow=0

13、;return0;/檢查棋盤左上方(包含對角線)能否存在五子連珠intGOBANG:CheckTopLeft()-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=intiRow=0;intiTempRow=0;intiColumn=0;intiPlayerOneLen=0;intiPlayerTwoLen=0;for(iRow=4;iRow=0)if(static_cast(1)=acBoardiTempRowiColumn)iPlayerOneLen+;iPlayerTwoLen=0;if(iPlayerOneLen=5)return1;elseif(static_cast(2)

14、=acBoardiTempRowiColumn)iPlayerTwoLen+;iPlayerOneLen=0;if(iPlayerTwoLen=5)return2;elseiPlayerTwoLen=0;iPlayerOneLen=0;iTempRow-;iColumn+;iPlayerOneLen=0;iPlayerTwoLen=0;iColumn=0;return0;/檢查棋盤右上方(包含對角線)能否存在五子連珠intGOBANG:CheckTopRight()-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=intiRow=0;intiColumn=0;intiTempCol

15、umn=0;intiPlayerOneLen=0;intiPlayerTwoLen=0;for(iColumn=0;iColumnWIDE_AND_LONG-4;iColumn+)iTempColumn=iColumn;while(iTempColumnWIDE_AND_LONG)if(static_cast(1)=acBoardiRowiTempColumn)iPlayerOneLen+;iPlayerTwoLen=0;if(iPlayerOneLen=5)return1;elseif(static_cast(2)=acBoardiRowiTempColumn)iPlayerTwoLen+;

16、iPlayerOneLen=0;if(iPlayerTwoLen=5)return2;elseiPlayerTwoLen=0;iPlayerOneLen=0;iRow+;iTempColumn+;iPlayerOneLen=0;iPlayerTwoLen=0;iRow=0;return0;/檢查棋盤左下方(不包含對角線)能否存在五子連珠intGOBANG:CheckDownLeft()-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=intiRow=0;intiTempRow=0;intiColumn=0;intiPlayerOneLen=0;intiPlayerTwoLen=0;

17、for(iRow=1;iRowWIDE_AND_LONG-4;iRow+)iTempRow=iRow;while(iTempRowWIDE_AND_LONG)if(static_cast(1)=acBoardiTempRowiColumn)iPlayerOneLen+;iPlayerTwoLen=0;if(iPlayerOneLen=5)return1;elseif(static_cast(2)=acBoardiTempRowiColumn)iPlayerTwoLen+;iPlayerOneLen=0;if(iPlayerTwoLen=5)return2;elseiPlayerTwoLen=0

18、;iPlayerOneLen=0;iTempRow+;iColumn+;iPlayerOneLen=0;iPlayerTwoLen=0;iColumn=0;return0;/檢查棋盤右下方(不包含對角線)能否存在五子連珠-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=intGOBANG:CheckDownRight()intiRow=0;intiTempRow=0;intiColumn=WIDE_AND_LONG-1;intiPlayerOneLen=0;intiPlayerTwoLen=0;for(iRow=1;iRowWIDE_AND_LONG-4;iRow+)iTempRo

19、w=iRow;while(iTempRowWIDE_AND_LONG)if(static_cast(1)=acBoardiTempRowiColumn)iPlayerOneLen+;iPlayerTwoLen=0;if(iPlayerOneLen=5)return1;elseif(static_cast(2)=acBoardiTempRowiColumn)iPlayerTwoLen+;iPlayerOneLen=0;if(iPlayerTwoLen=5)return2;elseiPlayerTwoLen=0;iPlayerOneLen=0;iTempRow+;iColumn-;iPlayerO

20、neLen=0;iPlayerTwoLen=0;iColumn=WIDE_AND_LONG-1;return0;-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=/檢查能否平手intGOBANG:CheckDraw()intiRow=0;intiColumn=0;for(iRow=0;iRowWIDE_AND_LONG;iRow+)for(iColumn=0;iColumnWIDE_AND_LONG;iColumn+)if(+=acBoardiRowiColumn)return1;return0;/檢查能否達(dá)到結(jié)束的條件(五子連珠或平手)intGOBANG:CheckFinish(

21、)intiJudgeRow=0;intiJudgeColumn=0;intiJudgeTopLeft=0;intiJudgeTopRight=0;intiJudgeDownLeft=0;intiJudgeDownRight=0;intiJudgeDraw=0;iJudgeRow=CheckRow();iJudgeColumn=CheckColumn();iJudgeTopLeft=CheckTopLeft();iJudgeTopRight=CheckTopRight();iJudgeDownLeft=CheckDownLeft();iJudgeDownRight=CheckDownRight(

22、);iJudgeDraw=CheckDraw();if(1=iJudgeRow|1=iJudgeColumn|1=iJudgeTopLeft|1=iJudgeTopRight|1=iJudgeDownLeft|1=iJudgeDownRight)cout恭賀玩家acPlayerOneName獲勝!endl;return1;if(2=iJudgeRow|2=iJudgeColumn|2=iJudgeTopLeft|2=iJudgeTopRight|2=iJudgeDownLeft|2=iJudgeDownRight)cout恭賀玩家acPlayerTwoName獲勝!endl;return1;-

23、完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=if(0=iJudgeDraw)cout平手!endl;return1;return0;/顯示棋盤到控制臺intGOBANG:ShowBoard()intiRow=0;intiColumn=0;system(cls);cout;for(iRow=0;iRowWIDE_AND_LONG;iRow+)if(9iRow)coutstatic_cast(A+iRow-10);elsecoutiRow;coutendl;for(iRow=0;iRowWIDE_AND_LONG;iRow+)if(9iRow)coutstatic_cast(A+i

24、Row-10);elsecoutiRow;for(iColumn=0;iColumnWIDE_AND_LONG;iColumn+)coutacBoardiRowiColumn;coutendl;return0;/開始下棋intGOBANG:Chess()-完好版學(xué)習(xí)資料分享-=WORD完好版-可編寫-專業(yè)資料分享=boolbJudge=false;while(1)charcRow=0;charcSeparator=0;charcColumn=0;charcTemp=0;intiLen=1;fflush(stdin);if(!bJudge)cout請acPlayerOneName輸入對應(yīng)的行和列(格式:a,3或a3或a3):;elsecout請acPlayerTwoName輸入對應(yīng)的行和列(格式:a,3或a3或a3):;while(n!=(cTemp=getchar()if(iLen3)cout輸入有誤!endl;ff

溫馨提示

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

最新文檔

評論

0/150

提交評論