Как проверить цвет определенной части изображения? - PullRequest
2 голосов
/ 17 апреля 2011

Я делаю простую игру, в которой используются "игроки ИИ" (они не действительно игроки ИИ). Мне нужно выяснить, имеет ли определенная часть «карты», которую я использую, определенные цвета, чтобы я мог заставить «игроков ИИ» делать определенные вещи. Возможно ли это сделать?

Я не знаю, поможет ли это, но игра под названием «Warcraft 3» использует очень похожую вещь для определения определенных вещей, таких как движение. Если вы знаете об этой игре, вам будет намного легче понять этот вопрос.

Я думаю, что это возможно, если поместить изображение в пользовательский подкласс NSView, но я еще не научился там проверять цвета.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Лучший способ сделать это - не проверять цвета фактического изображения (что может быть дорогостоящей операцией, если вы проверяете много отдельных пикселей), а указывать в структуре данных вашей карты характеристики вы хотите получить, а затем взять оба цвета и поведение игрока из этого.

В псевдокоде:

// 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 голос
/ 17 апреля 2011

Создайте NSBitmapImageRep из NSImage и используйте colorAtX: y: , чтобы получить цвет.

Проверка:
Ссылка на класс NSBitmapImageRep

...