微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame - 如何在表面找到某种颜色

如何解决Pygame - 如何在表面找到某种颜色

我正在制作 Asteroids 视频游戏,但遇到了一些问题。首先,对于射击船,我使用了一个三角形,其中最顶部和最底部的像素标有略有不同的颜色。顶部像素的 RGB 值应该是 (255,255,255),而不是它的值是 (254,255),以便稍微不同以更容易识别。问题来自旋转。当船旋转时,像素不在同一个位置,我需要它们来拍摄。船旋转使用

pygame.transform.rotate(playerImage,currentRotation)

我的问题是,我如何寻找表面内部的特定颜色? 我试过这个方法

for i in range(playerImage.get_height()):
    for i in range(playerImage.get_width()):
        if playerImage.get_at((j,i)) == (255,254,255):  # the other 255 is the alpha value
            topDot = [j,i]
        if playerImage.get_at((j,i)) == (254,255):
            bottomDot = [j,i]

代码确实可以工作,但速度非常慢,并且减慢了程序的其余部分。有没有办法使用不同的方法来加快速度?

解决方法

对于您解决问题的方式,不:找到哪个技能像素具有给定值,您必须访问每个像素。如果图像具有其他属性,其中像素取决于附近的值,您可以使用这些属性来改进搜索,但不是如您所说的那样。

但是,您确实有明显的解决方案:使用旋转参数来计算所需像素的位置。旋转算法可能与您在任何方向上的计算相差 1,但无论如何您几乎都在所需位置的顶部。您需要检查的像素不超过 9 个。

应用覆盖良好的旋转方程,然后从那里开始工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。