PYGAME - Редактировать цвета изображения (делает белый красный при 255,0,0) без числового питона?

Я делаю простую игру, в которой я хочу, чтобы мои персонажи были достаточно настраиваемыми. Я хочу, чтобы мои персонажи могли полностью редактировать цвета, например, если игрок хочет, чтобы у его персонажа была голубая кожа, он просто вставляет в ползунки или то, что я выберу, «0,255,255», или фиолетовый «255». ,0,255", или что-то случайное "25,125, 156", и пусть их персонаж будет такого цвета. Я даже не начал создавать игру, но у меня есть основа, и я точно знаю, что я должен делать практически для каждого, КРОМЕ этого.

Я сделал поиск в гугле, и получается, мне для этого нужен числовой питон? Ну, это совершенно новый пакет, и для того, чтобы средний игрок мог играть, я должен изменить его на форму EXE... (или установить на свой ПК python, pygame и численный python, что будет проблемой, если у них есть более поздняя версия...). Теперь это уже становится сложным только с pygame, но и с числовым python, есть ли даже учебник о том, как это сделать?

Какие-либо предложения? Спасибо!


person Bluetiger6001    schedule 25.02.2013    source источник
comment
так что в основном вы хотите сделать растровое изображение, чтобы игрок мог менять цвета во время выполнения?   -  person Bartlomiej Lewandowski    schedule 26.02.2013
comment
если это так: я нашел ответ здесь: gamedev.stackexchange.com/questions/26550/   -  person Bartlomiej Lewandowski    schedule 26.02.2013
comment
Да, но ответ о числовом питоне, что я сказал, не делая. Мне действительно не хочется изучать программу, а затем не иметь возможности конвертировать мою программу в exe, так как я хочу, чтобы все могли ее запускать.   -  person Bluetiger6001    schedule 02.03.2013
comment
если вы хотите создать программу или игру, которую сможет запустить каждый, я предлагаю изучить C и библиотеку SDL.   -  person Bartlomiej Lewandowski    schedule 02.03.2013


Ответы (2)


Конечно, для этого можно использовать метод грубой силы. Вот функция для замены цвета другим на поверхности pygame.

def color_replace(surface, find_color, replace_color):
    for x in range(surface.get_size()[0]):
        for y in range(surface.get_size()[1]):
            if surface.get_at([x, y]) == find_color:
                surface.set_at([x, y], replace_color)
    return surface
person Hannes Karppila    schedule 01.03.2015

Я предполагаю, что под image вы имеете в виду pygame.Surface. У вас есть несколько вариантов:

  • pygame.Surface.set_at(...)
  • Используйте палетированную поверхность. Затем смените палитру. Исходя из вашего варианта использования, это, вероятно, то, что я бы предложил.
  • Используйте модуль pygame.PixelArray PyGame. Я не думаю, что для этого требуется NumPy.
  • Просто используйте NumPy. На самом деле это не такое уж большое требование; это требуется для многих проектов, и его легко настроить. Вы получаете доступ к мощному модулю pygame.surfarray
person imallett    schedule 01.03.2015