導航:首頁 > 源碼編譯 > 五子棋判定演算法

五子棋判定演算法

發布時間:2024-08-04 14:17:58

Ⅰ C語言五子棋演算法

五子棋勝負的判定,一般有一下兩種演算法:

1.掃描整個棋盤,分別掃描四個方向是否有5個連子。網上找了很多五子棋源碼都是用此演算法,這意味著每下一個棋子都要掃描一遍19×19的棋盤,復雜而且低效,代碼略。
2.每下一字,從該子開始掃描其四個方向(例如:從該子的(x-4,y)坐標開始掃描橫向)是否存在5個連子。此演算法較為常用,而且不涉及更為復雜的數據結構。
另外,為解決掃描越界的問題,在聲明棋盤棋子位置時,可聲明一個(4+19+4)×(4+19+4)的棋盤,而讓棋子偏移(4,4)個坐標。

演算法2源代碼如下:
? void IfWin(int x,int y,int color){ TCHAR win[20]; int a,b; if(stone[x][y]==1) wcscpy_s(win,_T("黑棋勝利!")); else wcscpy_s(win,_T("白棋勝利!")); for(a=x-4;a<=x+4;a++)//判斷橫 if(stone[a][y]==color&&stone[a+1][y]==color&&stone[a+2][y]==color&&stone[a+3][y]==color&&stone[a+4][y]==color) {MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;} for(b=y-4;b<=y+4;b++)//判斷豎 if(stone[x][b]==color&&stone[x][b+1]==color&&stone[x][b+2]==color&&stone[x][b+3]==color&&stone[x][b+4]==color) {MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;} for(a=x-4,b=y-4;a<=x+4;a++,b++)//判斷右斜 if(stone[a][b]==color&&stone[a+1][b+1]==color&&stone[a+2][b+2]==color&&stone[a+3][b+3]==color&&stone[a+4][b+4]==color) {MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;} for(a=x-4,b=y+4;a<=x+4;a++,b--)//判斷左斜 if(stone[a][b]==color&&stone[a+1][b-1]==color&&stone[a+2][b-2]==color&&stone[a+3][b-3]==color&&stone[a+4][b-4]==color) {MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;}}

閱讀全文

與五子棋判定演算法相關的資料

熱點內容
unix網關命令 瀏覽:875
想自己做網站要學編程嗎 瀏覽:597
租個伺服器開個私服需要什麼 瀏覽:272
圖片換成pdf格式 瀏覽:663
javamidi編程 瀏覽:833
android60demo 瀏覽:69
頭條演算法怎麼復習 瀏覽:514
燈光控制通道可以編程設置嗎 瀏覽:783
webpack命令行 瀏覽:807
卸載雲伺服器操作系統 瀏覽:31
java文件移動文件夾 瀏覽:451
針織公斤足稱演算法 瀏覽:460
電腦下載的圖片從文件夾重新編組 瀏覽:645
安卓源碼編譯引導失敗 瀏覽:676
蘋果怎麼添加自定義app文件夾 瀏覽:930
橙牛app怎麼找客服 瀏覽:307
php對象魔術方法 瀏覽:487
OBV能量潮幅圖指標源碼 瀏覽:915
編程15個好習慣 瀏覽:678
電腦u盤文件夾顯示屏幕保護程序 瀏覽:803