谁知道五子棋和围棋的判赢的算法!!!!!

nnkiii 2007-11-22 09:31:40
五子棋的棋盘为10x10,使用0表示空子,1表示白子,-1表示黑子,求给出一个程序判断黑子获胜还是白子获胜.

还有,我不会下围棋,谁能给个围棋的输赢的规则.>>>>>

谢谢拉!!!!!!!!
...全文
749 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qkhhxkj102 2008-01-07
  • 打赏
  • 举报
回复
收藏
changjiangzhibin 2008-01-07
  • 打赏
  • 举报
回复
up
seaforce 2007-11-22
  • 打赏
  • 举报
回复
禁手是什么呀??知道的讲下哈
俺也想写这个小游戏玩
JhunHoonXZ 2007-11-22
  • 打赏
  • 举报
回复
不是的,除了长连,当黑方落下一子时如果同时形成5子相连,和禁手的情况,那么算黑方获胜
也就是说,首先判断黑方落子时判断有5子相连
如果5子相连,然后判断是否仅有5子相连,如果是,黑胜,否黑输
然后判断是否禁手,是,黑输
wunan320 2007-11-22
  • 打赏
  • 举报
回复
按照1楼的方法 在落子点的4个方向判断一下。
白子的话 只要有5个连就赢
黑子的话 判断一下有且仅有5个连算赢
除了长连的禁手应该每步判断 而不是最后一步判断。
jihanzhong 2007-11-22
  • 打赏
  • 举报
回复
那就自己完善了,我只是举最简单的,围棋也一样啊,一步一步来嘛。
想必楼主会逐渐完善的
JhunHoonXZ 2007-11-22
  • 打赏
  • 举报
回复
LS方法很好
不过没判断禁手,黑方下禁手点是要算输的
jihanzhong 2007-11-22
  • 打赏
  • 举报
回复
围棋判断胜负主要有两种:
数子和数目,两者有细微差别,刚开始写围棋程序建议用数子法。
半人工干预。

棋局结束后,人工点掉死子,然后程序用数子法判断胜负,这样比较简单。
数子法就是把自己地盘都填上自己的子,然后数谁的子多,当然黑方要减去贴子数。
jihanzhong 2007-11-22
  • 打赏
  • 举报
回复
int p[][]=new int[10][10];
....
//落子后判断
//int pointX,int pointY 落子坐标
public boolean hasVictory(int pointX,int pointY)
{
int i_temp=p[pointX][pointY];

int count=1;
int x=pointX;
int y=pointY;

//横向判断
while(x>0 && i_temp=p[--x][y]) count++;
while(x<9 && i_temp=p[++x][y]) count++;
if(count>=5) return true;

//纵向判断
count=1;
x=pointX;
y=pointY;
while(y>0 && i_temp=p[x][--y]) count++;
while(y<9 && i_temp=p[x][++y]) count++;
if(count>=5) return true;

//斜向判断1
count=1;
x=pointX;
y=pointY;
while(y>0 && x>0 && i_temp=p[--x][--y]) count++;
while(y<9 && x<9 && i_temp=p[++x][++y]) count++;
if(count>=5) return true;

//斜向判断2
count=1;
x=pointX;
y=pointY;
while(y>0 && x<9 && i_temp=p[++x][--y]) count++;
while(y<9 && x>0 && i_temp=p[--x][++y]) count++;
if(count>=5) return true;

return false;
}
JhunHoonXZ 2007-11-22
  • 打赏
  • 举报
回复
如果没有禁手
那么对于有经验的选手,如果他是黑子,那么必赢,如果是白子,必输(黑先白后)
因为先走1个子对于战局的影响很大
为了限制黑子的这种优势,针对先手的黑子,加了某些限制,这些限制就叫禁手
(禁手只针对黑子)

禁手的规则是
双活三禁手
(●●●,●● ●这两种是三,当造成三时,对方在接下来的一手必须进行封堵,否则这个三就能发展成五,这样的三就是活三)
双四禁手
(●●●●,●● ●●,● ●●●都是四)
长连禁手
(超过5个子相连:●●●●●●,最常见的长连)

如果下黑子时,同时形成5子相连和禁手的情况(不包括长连),算黑方赢
正规比赛时,如果黑子落子时造成禁手,而白子没有提出来,并继续落子,那么比赛继续进行,不算黑方禁手
而如果是编写游戏,一般来讲,都是不让落子在禁手点,或者落子在禁手点直接算输的


62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧