Stockfish Chess Engine 与 Swift 中的 iOS 项目集成

Posted

技术标签:

【中文标题】Stockfish Chess Engine 与 Swift 中的 iOS 项目集成【英文标题】:Stockfish Chess Engine Integration with iOS project in Swift 【发布时间】:2016-05-16 12:28:26 【问题描述】:

我正在尝试将 Stockfish 国际象棋引擎与一个用 Swift 编写的应用程序集成。 Stockfish ios 源代码对所有人开放,但它是用 Objective-C 编写的,引擎是用 C++ 编写的。我对 Objective-c 没有问题,但似乎无法理解它如何与 Swift 一起工作,这是否可能。 Stockfish 引擎没有文档,我很难掌握如何在 Swift 应用程序中构建它,尤其是当这是我第一次尝试类似的东西时。其他人向我建议我可以尝试使用 cocoapods 将引擎暴露在 swift 中,但我在这里有点迷路。如果有人对我有任何建议,那就太好了。感谢您的宝贵时间!

【问题讨论】:

您是否阅读过有关此事的官方文档? developer.apple.com/library/ios/documentation/Swift/Conceptual/…哪部分没看懂? Can I have Swift, Objective-C, C and C++ files in the same Xcode project?的可能重复 是的,我已经阅读,但是这个引擎使用 C++,并且在 Caleb 提到的问题中解释的包装器我不明白!不过感谢您回答我的问题! 【参考方案1】:

您真正想要的是Universal Chess Interface protocol 的 Swift 实现,以便任何兼容的引擎都可以与 CocoaPods(或 Carthage,或 SPM,...)打包并放入任何兼容的 Swift 应用程序中。建议您尝试使用 CocoaPods 的人可能就是这么想的。

对于仅将一些 Objective-C 代码与 Swift 链接的不那么雄心勃勃的任务,是的,这是绝对可能的,您需要所谓的“桥接头”来将 Objective-C 代码公开给 Swift。完整的详细信息在一本免费书籍中,您可以下载到 iBooks:

Using Swift with Cocoa and Objective-C

该文档也在 Apple 在线,here's a direct link 直接相关部分:

要将一组 Objective-C 文件导入到与您的 Swift 代码相同的应用程序目标中,您需要依靠 Objective-C 桥接头将这些文件公开给 Swift。当您将 Swift 文件添加到现有的 Objective-C 应用程序或将 Objective-C 文件添加到现有的 Swift 应用程序时,Xcode 会提供创建此头文件...

这个过程一般 Just Works™。如果没有,请搜索“桥接头”,您应该会找到很多合适的讨论!

【讨论】:

感谢 alexcurylo 我是应用程序开发的新手,还没有完全学会!感谢您的建议,我将尝试寻求有关 UCI 实施的任何帮助!

以上是关于Stockfish Chess Engine 与 Swift 中的 iOS 项目集成的主要内容,如果未能解决你的问题,请参考以下文章

二维数组与稀疏数组的相互转化

CodeForces-38B-Chess枚举+思维

删除文件或文件夹出错:无法删除Chess:指定的文件名无效或太长。请指定另以文件名

chess.js 的打字稿声明文件

Codeforces 38B - Chess

HDU 5724 Chess(国际象棋)