PYGAME - 在不使用numpy的情况下编辑图像颜色(将白色变为255,0,0的红色)?
我正在制作一个简单的游戏,想让我的角色可以高度自定义。我希望玩家可以完全编辑角色的颜色,比如说,如果玩家想让他们的角色拥有青色的皮肤,他们只需要在滑块上输入“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