问题标签 [baduk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5042 浏览

artificial-intelligence - 桌游“围棋”NP完整吗?

周围有很多国际象棋人工智能,显然有些足以击败一些世界上最伟大的棋手。

我听说已经为棋盘游戏Go编写了成功的 AI 进行了许多尝试,但到目前为止,还没有任何超出平均业余水平的构想。

在围棋中任何给定时间以数学方式计算最佳移动的任务是否是一个 NP 完全问题?

0 投票
2 回答
1759 浏览

linux - 围棋游戏的好框架(围棋,baduk)?

我喜欢围棋(在中国也称为围棋,在韩国也称为围棋)。我想创建一个程序(评估函数)来播放它。

如果框架处理两个重要任务,我更愿意:

  • 处理游戏规则,包括捕获、ko 规则和最终得分。
  • 处理像 KGS 这样的服务器和我的程序之间的通信。

此外,我的家用机器运行 Linux 或 Mac OS X;我不能使用任何仅 Windows 平台。

谢谢!

0 投票
4 回答
7267 浏览

c# - 具有大量元素的 WPF 绘图性能

我正在尝试在 WPF 中创建一个自定义控件来显示围棋游戏的游戏树(请参阅此处了解它的外观)。我或多或少地让它在布置节点时工作,但我发现的一个问题是,当节点的数量大于大约30. 由于围棋平均由大约 200 步棋组成(更不用说玩家可能分叉到的其他分支),这在任何现实游戏中都将是一个相当大的问题。

目前,我正在为游戏节点(每个都是一个带有阴影位图效果和一些文本注释的椭圆)和树中的弧线使用单独的用户控件,所有这些都绝对定位在画布中。

布局算法不是这样的问题,因为这只需要在创建新分支时执行(否则节点可以直接添加到其父节点下方,因此不需要重新定位其他节点)。主要问题很简单,就是对这个画布及其元素的任何类型的操作都非常缓慢,大概是因为它有很多子元素。随着树的宽度和复杂性的增加,它显然会变慢,因为有更多的弧和节点。

我的问题:绘制这样一个大型/复杂结构的正确方法是什么,这样它在增长时不会渲染得太慢?

编辑:这与我的另一个问题有关

编辑:这是我用于节点的用户控件的标记:

这些被动态添加到画布中以绘制树。

0 投票
1 回答
1730 浏览

javascript - 围棋/围棋/围棋棋盘

我正在尝试使用新标签,我已经遇到了我的第一个障碍。我想我会通过实现经典棋盘游戏 Go/Baduk/Weiqi 的一个版本开始弄湿我的脚。

我已经使用 moveTo() 和 lineTo() 绘制了 xy 网格,并且我使用 fillRect() 绘制了一个木质背景,当然它需要在那个 XY 网格“下方”。

然而,这就是我的问题。fillRect() 背景被绘制在网格的顶部——因此遮蔽了网格。

我该如何扭转这个?这是我正在使用的:

0 投票
1 回答
1468 浏览

java - 如何用Java编写围棋、围棋、围棋游戏

我是java初学者,想知道围棋棋盘有没有java骨架。

0 投票
4 回答
2563 浏览

algorithm - 玩围棋的算法?

围棋游戏的最新算法是什么?
哪些文章(描述算法)最适合阅读?

有一个StackExachge 网站专门讨论 Go,但没有足够的人承诺在那里提出这个问题。

0 投票
1 回答
425 浏览

android - 为安卓围棋游戏应用在棋盘上画石

我是一名 Android 新手,正在为 Android 开发围棋游戏应用程序。我在板上画单石时遇到问题。
这是我的 onDraw() 方法。

我有一个 onTouch() 方法:

关键是,当我使用此方法在类构造函数中设置背景颜色时:

touchEvent后应用程序无法在板上绘制石头,但是当我不设置背景颜色时,应用程序完美地绘制了石头。
PS 属性stoneX、stoneY 已正确定义和初始化。

0 投票
4 回答
6914 浏览

java - JAVA - 围棋算法

我正在尝试实现一种算法来清除围棋游戏中的死子。

我听说 Floodfill 是实现这一目标的最佳方法,因为递归使用它会最有效且更容易实现。

我在我的代码中使用它时遇到了麻烦,我想知道我应该如何去实现它。

这是我的一门课,很容易解释。

xy是正方形的坐标,placed是放下石头的字符,liberty是另一个字符

任何帮助都会很棒!

0 投票
2 回答
240 浏览

c - 在围棋中清除棋盘的快速算法

我目前正在编写一些代码来处理围棋板。围棋棋盘表示为一组颜色。该数组有size×size个条目,代表一个二维方板。

移动时enum color player,适用以下程序:(见规则

  1. [...]
  2. 如果 P 的颜色(垂直或水平)相邻的点从 P 到颜色 C 的点有一条路径(垂直或水平),则称点 P(不是颜色 C)到达 C。
  3. 清除颜色是清空该颜色的所有未达到空的点的过程。
  4. [...]
  5. 一个动作包括 [...] 清除对手的颜色,然后清除自己的颜色。

我正在寻找一种快速(就计算复杂性和实际速度而言)算法来清除电路板。你能帮助我吗?

0 投票
1 回答
5907 浏览

java - JScrollPane 视口大小

我试图让hist(HistoryPanel extends JPanel)成为 JScrollPane 的视口,histScroll. 问题是水平滚动条不会显示,除非我强制它显示滚动条策略(在下面的代码中),即使我强制它显示,它也无处滚动。问题是 HistoryPanel 的大小拒绝水平增加。我尝试了不同的方法来设置 的大小hist,但它的大小继续保持水平固定。然而,垂直地,它工作得非常好。我不明白问题是什么。

我可以随心所欲地向下滚动,但不能向右滚动。这是一个很大的问题,因为它切断了一些图像,而在这个程序中,水平滚动实际上比垂直滚动重要得多。

在此处输入图像描述