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

五子棋判定演算法

發布時間: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;}}

閱讀全文

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

熱點內容
公開密鑰加密哪年 瀏覽:829
程序員向 瀏覽:469
滑鼠指針壓縮包下載 瀏覽:762
登錄認證失敗請檢查賬號伺服器地址 瀏覽:737
解壓游戲覆蓋方式 瀏覽:533
遺傳演算法的變異運算元怎麼實現 瀏覽:685
spring如何添加app 瀏覽:664
python循環import 瀏覽:552
怎樣把js代碼加密 瀏覽:800
frp伺服器百度雲 瀏覽:792
12306演算法 瀏覽:630
單片機驅動小馬達 瀏覽:100
pythoncookbook27 瀏覽:518
c的指針和python 瀏覽:186
python寫sftp 瀏覽:957
讀文pdf 瀏覽:507
pythonnumpy內積 瀏覽:782
linux硬碟模式 瀏覽:15
怎麼查安卓的空間 瀏覽:589
linux命令復制命令 瀏覽:116