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

五子棋判定演算法

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

閱讀全文

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

熱點內容
python中多個隨機數的生成 瀏覽:118
伺服器偵聽埠是什麼意思 瀏覽:320
手機通知音效文件夾 瀏覽:134
pdf產品目錄 瀏覽:202
三菱fd編譯通過不了 瀏覽:156
15g游戲下載完怎麼解壓 瀏覽:708
編譯原理文法中的句型 瀏覽:755
出售廣聯達雲翻樣加密狗 瀏覽:276
把多頁pdf合並軟體 瀏覽:325
熱點已保存加密可上網什麼原因 瀏覽:557
張家口app怎麼查看全部賬號 瀏覽:183
cad先選擇命令 瀏覽:749
我的世界命令方塊手機版 瀏覽:254
迅投python下單 瀏覽:471
javamd5加密32位 瀏覽:469
php連接mysql測試代碼 瀏覽:473
如何下載亞馬遜app安卓 瀏覽:698
解壓神器大組合 瀏覽:728
多次編譯一個內核會快嗎 瀏覽:162
單片機伺服500k 瀏覽:868