社区
数据结构与算法
帖子详情
围棋提子算法
ycheng677
2006-06-08 01:36:29
求围棋提子、打劫算法,最好是VB做的.有详细实现步骤的。
...全文
1088
13
打赏
收藏
围棋提子算法
求围棋提子、打劫算法,最好是VB做的.有详细实现步骤的。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mLee79
2007-03-20
打赏
举报
回复
应该该找网管/裁判啊, oo 的耐心太好了, 要是包干用时的时间很紧张这样搞超时负岂非很无趣 ...
围棋规则里是可以虚手的, 不会有B把自己的眼填死的问题 ..
貌似中国规则,应氏规则里往自己空里填子不影响胜负, 日本规则里每填一子损一目, 他喜欢填填就是 ...
提子算法应该比较简单, 打劫规则用 "禁全局同形" 实现起来简单些 ..
oo
2007-03-20
打赏
举报
回复
但是有一个问题,比如A与B对弈,A已经输了,但是A拒不承认,要求继续下,
可是B的围城的空白处实际比A少,所有一直下下去,就是A胜(所有的B棋都被消灭了)
再极端的,现在所有的B棋都被消灭了 ,B还要继续下, 二人一直下,除非A所有都是活口,B就可以继续下,A也就有可能再次被B全部提掉。
重复以上N 次,无法输赢。!!!
所有最大问题:
如何判断A输了?
总不能一直下到最后一个空白吧,
因此需要边界检测, 还需要检测到死棋与活棋,好难啊。
============================================================
在网上下棋的时候碰到n次这样耍赖的人,都被俺搞定,哈哈
填子的时候要注意多做一些一目的眼,同时尽量让对方少做成一目的眼,因为一目的眼自己能填,对方不能填,到最后对方会无棋可下。
yuxing_hui
2007-03-19
打赏
举报
回复
/*
Xin.Yu@polycom.com
*/
我以前也思考过这个问题,现在有一个解决方法,希望大家斧正。
1.每一粒棋都属于一个堆,所有相连的同色棋属于同一个堆。
比如假设第一粒白棋属于堆1,随后又下了一粒白棋并且这两个棋相连(判断两粒棋是否相连
很简单,就不说了),那第二粒棋也属于堆1。
2.每一粒棋会给它所属的堆增加或者减少度,度是指单粒棋子或者堆的活孔数目,当一个堆的
活孔数目为0时,所有属于这个堆的棋子都应该被拿掉。
举个例子,当下了一颗白棋后,要先判断这个白棋上下左右四个方向是否有棋,如果有棋,则
将相邻棋子所属的堆的度数减一,如果某个堆属于黑棋,并且因为这个白棋的加入而使其度为0,则这个黑棋堆是死棋,应该拿掉,
然后计算出这颗棋子自己的度,棋子的度初始为4,每有一个
棋子与它相邻,则减一,如果有四个棋子与它相邻,那它的度就是0了,
最后找出这个棋子属于
那个堆(通过查找相邻同色棋子的堆号即可得到),把这个堆的度加上将这个棋子的度,即得
到这个堆加入了新棋子后的新的度数,如果度数为0,则这个堆的棋子是死棋,应该拿掉。
3.还有一个麻烦点的地方就是当要拿掉一堆棋子时,需要调整与相临的反色堆的度。
这个可以通过记录堆中每一个棋子是否与反色棋子相邻,也可以
把一个堆中所有与反色棋子相邻的棋子记录在链表里。
思路不是很严谨,仅供参考,欢迎讨论
LiChenYue
2007-03-19
打赏
举报
回复
围棋的不好做,但五子棋的就有不少原马。
天涯孤棹
2006-12-08
打赏
举报
回复
这种事情我碰到过,然后自己也做过,呵呵
后来我好像发现,只要是赢的,始终是赢的,只需填子的时候稍微注意下次序就行了吧
Preamble
2006-07-27
打赏
举报
回复
但是有一个问题,比如A与B对弈,A已经输了,但是A拒不承认,要求继续下,
可是B的围城的空白处实际比A少,所有一直下下去,就是A胜(所有的B棋都被消灭了)
再极端的,现在所有的B棋都被消灭了 ,B还要继续下, 二人一直下,除非A所有都是活口,B就可以继续下,A也就有可能再次被B全部提掉。
重复以上N 次,无法输赢。!!!
所有最大问题:
如何判断A输了?
总不能一直下到最后一个空白吧,
因此需要边界检测, 还需要检测到死棋与活棋,好难啊。
wuhuabucai
2006-07-25
打赏
举报
回复
楼上的不错
Kvci
2006-06-27
打赏
举报
回复
计算机围棋网
http://www.computergo.net
论坛里有个他们的群,围棋棋盘的实现程序应该早有了
里面有几篇文章还不错的
墨绿
http://www.computergo.net/index.php?option=com_content&task=view&id=9&Itemid=7
GNUGo 文档 - 3. GNU Go 综述
http://www.computergo.net/index.php?option=com_content&task=view&id=8&Itemid=7
Kvci
2006-06-27
打赏
举报
回复
你搜索gungo
这个是开源围棋项目
不但有你要的那些
还有走棋智能算法
JasonHeung
2006-06-27
打赏
举报
回复
我有C++的
天涯孤棹
2006-06-26
打赏
举报
回复
顶一下
chenzhichao2008
2006-06-13
打赏
举报
回复
不懂,帮顶
treeroot
2006-06-08
打赏
举报
回复
我看过c++实现的,自己用java做过
java实现
围棋
算法
_Java递归实现
围棋
提子
思想
在制作
围棋
游戏的时候一般来说会有两个问题
围棋
提子
的
算法
思想Ai走子的
算法
思想由于ai走子的
算法
思想确实太过于难了,牵扯到深度学习的东西这里就不进行阐述了毕竟我也根本不会我将阐述的是
围棋
提子
的思想我是使用递归的思想来解决的当一名玩家下了一步棋之后,首先看这步棋的四面八方有没有不同颜色的棋子如果有,则有这个棋子的对象作为形参,开始判断他的四周为空、异色棋子或者同色棋子如果是异色棋子,返回true如果是...
围棋
博弈程序的实现与思考(5)——
提子
算法
提子
算法
的好坏对整个程序的性能影响是很大的。尽管在实际对局中,
提子
行为并不经常发生,但每次落子时计算机都得判断是否需要
提子
。根据
围棋
规则,可得
提子
算法
的步骤,以黑棋落子为例: 1)依次判断与该落子点相邻的白子所在棋串(棋盘上实线相连的棋子集)的气,如为0,则提走棋串。 2)如果1)中不存在
提子
行为,则计算该落子点所在棋串的气是否为0,若不为0,则落子合法,若为0则不合法。 这只是个粗略的步骤...
使用C#开发Unity
围棋
游戏源码分享及
提子
算法
实现详解
Unity是一款强大的游戏开发引擎,支持多平台发布,广泛应用于各种游戏开发中。它提供了强大的编辑器、丰富的资源和插件库,使得开发者可以高效地进行游戏开发。C#是一种由微软开发的现代、通用、面向对象的编程语言。它语法简洁、功能强大,是Unity开发的主要编程语言。使用C#开发Unity游戏,可以充分利用其面向对象编程的优势,编写出结构清晰、功能完善的游戏代码。本文详细介绍了如何使用C#在Unity中开发一款
围棋
游戏。从创建项目。
围棋
程序
提子
算法
WIN32 API
//
围棋
算法
,利用一个
围棋
类来完成,最后的是一个
围棋
的
提子
算法
。在WIN32 API中编写,这只是
围棋
类的代码,如果想得到所有代码和.exe文件,请到网站: fyyuan.5166.info 中下载。作者:袁飞艳 #include #include #define max_num 361 //ÆåÅÌÖÐËùÓеãµÄ¸öÊý#define length 19
VC++开发
围棋
游戏:从MFC框架到
提子
算法
的完整实践指南
桌面应用开发是软件工程的基础领域,其核心在于理解操作系统与应用程序的交互机制。在Windows平台,原生开发通常涉及消息循环、图形渲染和资源管理等底层原理。VC++作为经典的开发工具链,结合MFC框架,为开发者提供了直接操控Windows API的途径,能够实现高性能、高可控性的桌面程序。这种技术组合在需要精细控制界面和逻辑的场景中具有独特价值,例如开发棋牌类游戏。
围棋
作为一种规则简单但逻辑复杂的棋类,其实现涉及棋盘状态管理、落子判定、特别是
提子
算法
等核心问题。通过VC++和MFC开发
围棋
游戏,开发者可以深
数据结构与算法
33,026
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章