| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1492 人关注过本帖
标题:自己写的一个五子棋算法,大家有兴趣的给点意见~
只看楼主 加入收藏
fbird
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-8-11
收藏
 问题点数:0 回复次数:5 
自己写的一个五子棋算法,大家有兴趣的给点意见~
我主要实现的是三三禁手和四四禁手,首先在程序中给出活三和活四的定义,然后判断三三禁手的规则:若该棋子能形成2个或2个以上的活三就算三三禁手了,同样,四四禁手的规则:若该棋子能形成2个或2个以上的活四就算禁手。
    具体的实现过程:1)首先判断该棋子的可能会形成活三或者活四的方向,就是若有同色的棋子与该棋子相邻或者隔一个位置相邻,就记下他们的方向;2)然后逐个方向进行判断是否禁手,判断过程按照该棋子在这个方向上形成的长度(即在该方向上与这个棋子相连的所有棋子的个数)来进行,长度为1,2,3的情况都需要是否会形成双三或双四,长度为4的情况只需要判断是否会形成双四;3)双三的判断过程,首先看该棋子在这个方向上是否已被封住(即判断沿着这个方向的最后一个棋子的下一个位置是否有反色的棋子,若有,则表示该方向已被封住),若该棋子在这个方向上已被封住,则不会形成活三,也就不会形成双三禁手;而如果该棋子在这个方向上没有被封住,就继续判断它是否会形成活三;4)活三的判断,我采用模拟棋子的办法,就是分别在这个方向的尽头处的下一个位置模拟一颗同色棋子,判断模拟的这颗棋子是否会形成活四,判断完后,删除该模拟的棋子,再在相反的方向同样模拟棋子并判断,最后只要有任一方向的模拟棋子可以形成活四就表明该棋子形成了一个活三;5)活四的判断就很容易了,也同样采用模拟棋子的办法;6)最后,在所有可能形成产生禁手的方向判断完后,统计该棋子形成活三和活四的个数,大于等于2个的就算是禁手了~~
        不知道大家对这个算法有什么建议?对于网上的一些更复杂的禁手规则,我还没有什么好的想法来实现,有兴趣和大家交流交流~~~
搜索更多相关主题的帖子: 五子棋 棋子 算法 兴趣 意见 
2008-01-04 19:58
上水之棋
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-2
收藏
得分:0 
好,顶
2008-01-04 23:22
fbird
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-8-11
收藏
得分:0 
谢谢~~
2008-01-05 20:33
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 
顶一个!
看起来挺深奥的,但没细看!

实践、学习、再实践、再学习......
2008-01-05 22:15
kkqq
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2008-2-15
收藏
得分:0 
感觉还不错~~
2008-02-15 10:59
长风破浪
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2005-10-9
收藏
得分:0 
回复 1# 的帖子
想法不错....

The way ahead is long; I see no ending, yet high and low I’ll search with my will unbending.
2008-02-15 11:53
快速回复:自己写的一个五子棋算法,大家有兴趣的给点意见~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022760 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved