objective-c - 如何检查图像某一部分的颜色?

标签 objective-c cocoa nsimage

我正在制作一个使用“AI 玩家”的简单游戏(他们并不是真正的 AI 玩家)。我需要找出我正在使用的“ map ”的某个部分是否具有某些颜色,这样我就可以让“AI玩家”做某些事情。可以这样做吗?

我不知道这是否有帮助,但是一款名为“魔兽争霸3”的游戏使用非常相似的东西来确定某些事情,例如移动。如果你了解这个游戏,应该会更容易理解这个问题。

我认为如果我将图像放入自定义 NSView 子类中,这可能是可能的,但我还没有学会如何检查那里的颜色。

最佳答案

做到这一点的最佳方法是不要费心检查实际图像的颜色(如果您要检查大量单独的像素,这可能是一项昂贵的操作),而是在 map 的数据结构中指示特征你想要的,然后从中获取颜色和玩家行为。

伪代码:

// Draw Map
foreach currSquare in listOfSquares:
    if map[currSquare].hasPropertyX():
        drawSquare(currSquare, blue)
    else if map[currSquare].hasPropertyY():
        drawSquare(currSquare, red)

// Move pieces
foreach currPlayer in listOfPlayers:
    squareIAmStandingOn = currPlayer.square
    if map[squareIAmStandingOn].hasPropertyX():
        currPlayer.takeActionX()
    else if map[squareIAmStandingOn].hasPropertyY():
        currPlayer.takeActionY()

关于objective-c - 如何检查图像某一部分的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5695875/

相关文章:

ios - 当键盘出现 iOS 时向上滚动 tableview 行

快速调整图像大小并保存分辨率问题

swift - NSImagerepresentations.first 返回 nil。为什么?

objective-c - 为什么不调用 NSResponder 的键盘操作?

cocoa - 如何将 WebView 中的图像数据获取到 NSData 对象中?

ios - 在可缩放的 UIView 中保留 CAShapeLayer 的 lineWidth

ios - 无法从我的项目中分配任何内容 - 静态库(使用 XCTests)

objective-c - 从另一个应用程序获取证书根

cocoa - 过滤出现在 NSPopUpButton 列表中的核心数据实体中的条目

objective-c - 在 Cocoa 应用程序中打开非标准 URL