PYGAME - 在不使用numpy的情况下编辑图像颜色(将白色变为255,0,0的红色)?

0 投票
2 回答
2171 浏览
提问于 2025-04-17 17:05

我正在制作一个简单的游戏,想让我的角色可以高度自定义。我希望玩家可以完全编辑角色的颜色,比如说,如果玩家想让他们的角色拥有青色的皮肤,他们只需要在滑块上输入“0,255,255”,或者紫色“255,0,255”,或者其他随机颜色“25,125,156”,然后角色就会变成这个颜色。我还没有开始制作游戏,但我已经有了基本的想法,几乎每个部分我都知道该怎么做,除了这一点。

我在谷歌上搜索了一下,结果发现我需要用到数值计算的Python库?这对我来说是一个全新的东西,而且为了让普通玩家能够玩这个游戏,我必须把它转换成EXE格式……(或者让他们的电脑上安装Python、pygame和数值计算的Python库,这对使用较新版本的玩家来说会是个问题……)。现在,仅仅使用pygame就已经有点复杂了,再加上数值计算的Python库,难道真的有教程教我怎么做吗?

有什么建议吗?谢谢!

2 个回答

0

我猜你说的 image 是指 pygame.Surface。你有几个选择:

  • pygame.Surface.set_at(...):这个方法可以用来设置某个像素的颜色。
  • 使用调色板表面。然后改变调色板。根据你的需求,这其实是我最推荐的做法。
  • 使用 pygame.PixelArray 这个PyGame模块。我觉得它不需要NumPy。
  • 直接使用NumPy。其实这并不是一个很大的要求;很多项目都需要它,而且设置起来也很简单。这样你就可以使用强大的 pygame.surfarray 模块。
0

当然,你可以使用暴力破解的方法来实现这个。下面是一个函数,用来在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

撰写回答