如何检查图像某个部分的颜色?

时间:2011-04-17 19:27:38

标签: objective-c cocoa nsimage

我正在制作一款使用“AI玩家”的简单游戏(他们不是真正的 AI玩家)。我需要弄清楚我使用的“地图”的某个部分是否有某些颜色,所以我可以让“AI玩家”做某些事情。有可能这样做吗?

我不知道这是否会有所帮助,但是一款名为“魔兽争霸3”的游戏使用非常相似的东西来确定某些事情,比如运动。如果你知道这个游戏,那么理解这个问题要容易得多。

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

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是不要费心检查实际图像的颜色(如果要检查大量单个像素,这可能是一项昂贵的操作),而是在地图的数据结构中指出特征你希望拥有,然后两者从中获取颜色和玩家行为。

在伪代码中:

// 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()

答案 1 :(得分:1)

从NSImage创建 NSBitmapImageRep 并使用 colorAtX:y:来获取颜色。

检查:
NSBitmapImageRep Class Reference