问题标签 [uci]

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 投票
1 回答
1224 浏览

lua - UCI。Lua 脚本。如何编辑防火墙规则

我的配置中有一台主机的重定向规则,但有时我需要更改 ip。

现在我在脚本中添加规则时遇到问题

它不起作用。我在 openwrt wiki 中发现“防火墙”“是一种类型,而不是一个部分”。部分应该看起来像 cfg02f02f

现在的问题是:如何找到这个cfg02f02f?

uci_cursor:get_all("system") 没有显示任何东西。

0 投票
1 回答
341 浏览

openwrt - 以编程方式远程配置 openwrt 设备

我最近了解了 UCI,我想编写一些自动化脚本来配置 openwrt 设备。我有两个问题:

  1. 除了编辑配置文件或使用 uci cmd 工具(我假设它就是这样做的)之外,是否有更编程的方式在 openwrt 上配置东西?也许一些API调用?(不怕写原生c代码)
  2. 与 ^ 相同但远程(不是 sftp 或 luci,图片类似于 'ucirpc')
0 投票
1 回答
64 浏览

chess - 如何推断受 mate 评估影响的边

我有一个与 uci 国际象棋引擎(Stockfish 8)通信的 GUI。问题是当引擎找到一个伙伴时,它只发送包含“...... score mate 1 nodes 4677......”的输出。我可以推断这意味着一步就有队友(#1)。但是,与 cp 评估不同,当黑方可以交配时,我看不到负号。那么,我怎么知道可以交配的是白色还是黑色?

0 投票
1 回答
488 浏览

node.js - 如何在 lambda nodejs 中处理异步调用

我正在使用 lambda 中的 nodejs 创建一个国际象棋引擎,但由于异步调用,它每次都在 lambda 上显示超时错误。这只是功能的一部分。它在本地 nodejs 控制台上运行良好,但在 lambda 上运行良好。请有人提出一些建议,因为我对此并不陌生。

异步调用给出了与以前相同的错误,我认为这可能是错误的。

0 投票
2 回答
2500 浏览

java - 如何生成 FEN 字符串并将其发送给 Stockfish?

我正在构建一个国际象棋 GUI,它应该与 Stockfish 对话。我听说我必须生成一个 FEN 字符串,以告诉 Stockfish 已采取的行动。所以问题是,我该怎么做?我在这里真的遇到了死胡同。我正在使用Eclipse IDE。

0 投票
1 回答
866 浏览

c# - 将外部 ChessEngine 与我的 Unity 项目集成的正确方法是什么?

我正在 Unity 中开发国际象棋游戏。我不是自己编写人工智能,而是使用名为MadChess的国际象棋引擎。

我下载了引擎的源代码(用 C# 编写)以及名为“ MadChess.exe ”的可执行文件(基本上是一个命令提示符,通过它我们可以按照UCI协议与引擎对话)

我之前实际上没有将国际象棋引擎与统一项目集成,也无法在网上找到很多关于如何做到这一点的资源。

方法 1: 最初,我在 Unity 中编写了一个 C# 脚本,它创建了一个单独的进程来与“ MadChess.exe ”通信,但后来我意识到这种方法有问题。这是因为当我将 Unity 项目构建为 Windows 的独立应用程序时,它依赖于位于我的 PC 上的物理“ MadChess.exe ”文件,即它不会构建所有内容(我的 Unity 项目代码以及国际象棋引擎代码) 一起成为一个可执行的应用程序。这在我看来是错误的,只能通过创建游戏安装程序来纠正,该安装程序将“ MadChess.exe ”文件与我的主要 Unity 代码一起注入。

方法 2: 现在,我正在尝试浏览 MadChess 国际象棋引擎项目的源代码,并基本上创建国际象棋引擎项目的 .dll 文件,我计划将其用作我的 Unity 项目中的插件。我最终会通过我在 Unity 中的 C# 代码与他们交互。这是正确的方法吗?

我被困在这个问题上大约一个星期左右,但仍然无法找到明确的方法。我不想再花一个星期才意识到我做错了。即使我从一开始就错了,请告诉我。我只是想将国际象棋引擎与我的 Unity 项目集成。如果有人有任何建议或想法,或者之前有人这样做过,请指导我。我将感激不尽。谢谢你一直陪我到这里。

0 投票
1 回答
1040 浏览

c# - 无法与“Stockfish-9-armv7”二进制文件通信

我正在 Unity3D 中开发国际象棋游戏。我想为Android平台开发它。对于 AI,我使用的是 Stockfish 国际象棋引擎。我下载了名为“ Stockfish-9-armv7 ”的 Android 版 Stockfish 二进制文件。我将此二进制文件放在我的 StreamingAssets 文件夹中,以便它在构建步骤期间正确进入目标平台。直到这里一切正常,即当我构建我的 Unity 项目时,文件被放置在正确的位置,我可以很好地看到它。

在此处输入图像描述

现在为了让我的 AI 工作,我必须使用UCI协议与这个二进制文件进行通信。所以我在我的 Unity 项目中编写了一个 C# 脚本,它创建了一个进程来运行二进制文件并与之通信。但这不起作用。

然而,当我对 Windows 执行完全相同的操作时,即使用名为“stockfish_9_x64.exe”的 Windows 二进制版本的 Stockfish 并将其构建为独立应用程序时,一切正常,我能够通过我的 C# 代码与引擎进行通信。

我在网上进行了研究,但找不到太多资源和指导。我发现了一个类似的帖子,通读它让我得出结论,它可能与文件权限有关。提出这个问题的人实际上通过编写这两行代码解决了这个问题:

然而,他使用的是 Xamarin 并且可以访问 Java 运行时库。我正在使用 Unity 和 C#,我真的不知道如何更改此二进制文件的执行/运行权限并运行它。事实上,我什至不知道这是否是问题所在。

我只想将 stockfish 集成到我的 Unity 项目中,并以 Android 作为目标平台。如果有人有任何想法,建议或以前有人这样做过,请指导我。即使我从一开始就错了,而且我的方法有问题,也要让我知道,以及更正的方法。

下面是我的代码:

0 投票
1 回答
2693 浏览

c# - 在 Unity 中使用 Stockfish 国际象棋 AI

早上好。我正在尝试将 Stockfish 实施到 Unity 国际象棋游戏中,有人告诉我最好的方法是使用 Spawn.Process 有人知道我可以查看并作为参考的现有代码吗?

不同的游戏状态是与 AI 交流的最佳方式吗?

谢谢!

0 投票
1 回答
271 浏览

python - Python-chess 打开 UCI 引擎权限错误被拒绝

我目前正在创建一个 python 脚本,它使用 python-chess 和 chess.uci 打开一个国际象棋引擎 Stockfish。但是,当我尝试打开鱼引擎时,我得到

PermissionError: [Errno 13] 权限被拒绝

所以我更多地研究了这个问题,显然,你不能直接打开目录或文件夹。但是,查看为 python-chess 打开 UCI 引擎的文档,该示例显示打开似乎是 /usr/bin 下的目录

文档在这里:https ://python-chess.readthedocs.io/en/v0.23.10/uci.html

有没有其他方法可以使用 UCI 打开引擎?我的操作系统系统是 Mac OS。

0 投票
1 回答
801 浏览

rust - 如何将指向可变变量的指针共享给线程?

我必须为我的国际象棋引擎实现 UCI协议

它需要从命令行读取命令。发送命令后go,必须开始搜索。stop但是,在这个搜索过程中,仍然需要接收其他命令,例如。在 的情况下stop,搜索必须完全退出。

这就是代码的外观(省略了不重要的细节)。

这段代码不起作用,因为我假设该字段只是被复制了。但是,我尝试提供结构,然后代码抱怨,因为您不能同时拥有可变引用和普通引用。我还研究了与线程通信的方法。然而,大多数解决方案都使用通道来实现这一点,但我认为通道在我的情况下不起作用,因为线程总是在计算,所以它只会在它终止后才接收通道的命令。