导航:首页 > 源码编译 > 五子棋判定算法

五子棋判定算法

发布时间: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;}}

阅读全文

与五子棋判定算法相关的资料

热点内容
hadoop解压缩 浏览:421
30岁程序员生计 浏览:472
苹果iOS反编译软件 浏览:460
当一个体面的程序员是什么体验 浏览:291
联想安装哪个编译器 浏览:446
苹果手机如何创建app组 浏览:40
如何知道服务器开通了什么端口 浏览:34
动态ip地址由dhcp服务器来分配 浏览:800
aes128加密c 浏览:396
成为插画师pdf 浏览:325
奥特曼系列ol为什么进不去服务器 浏览:742
盛世服务器怎么开启 浏览:87
编译安卓源码修改定位 浏览:200
加密上市是什么意思 浏览:802
一年程序员面试 浏览:174
多个jpg合成pdf 浏览:930
pdf转word是图片 浏览:942
程序员看不懂怎么办 浏览:273
linux操作系统题 浏览:769
单片机无符号数加法 浏览:231