Python 在pygame中更改颜色时出现类型错误
所以我在pygame中进行实验,并为一个慢慢改变颜色的矩形编写了一些代码Python 在pygame中更改颜色时出现类型错误,python,pygame,typeerror,Python,Pygame,Typeerror,所以我在pygame中进行实验,并为一个慢慢改变颜色的矩形编写了一些代码 a = 4 b = 3 c = 2 #some irrelevant code later if color[0]+a < 255: color[0] += a else: a *= -1 if color[1]+b < 255: color[1] += b else: b *= -1 if color[
a = 4
b = 3
c = 2
#some irrelevant code later
if color[0]+a < 255:
color[0] += a
else:
a *= -1
if color[1]+b < 255:
color[1] += b
else:
b *= -1
if color[2]+c < 255:
color[2] += c
else:
c *= -1
a=4
b=3
c=2
#一些不相关的代码
如果颜色[0]+a<255:
颜色[0]+=a
其他:
a*=-1
如果颜色[1]+b<255:
颜色[1]+=b
其他:
b*=-1
如果颜色[2]+c<255:
颜色[2]+=c
其他:
c*=-1
a、 b和c表示红色、绿色和蓝色的变化速度
问题是,出于某种原因,它会给我一个TypeError:程序运行几秒钟后,颜色参数无效,通常是在颜色非常蓝的情况下。我看不出出现无效颜色参数的任何原因。您最终将获得-ve颜色。如果颜色太高,可以反转方向,但如果颜色太低,则不能反转方向。检查以确保其也大于0
if 0 < color[0]+a < 255:
color[0] += a
else:
a *= -1
如果0
我希望出现ValueError
而不是TypeError
,但现在的情况似乎是,如果我们使用a=4
并使用color[0]
==250,因此更改为color[0]
254
==254,因此保持不变,color[0]
变为a
-4
==254,因此更改为color[0]
250
- 。。。保持减法
4
>>> from itertools import izip, cycle
>>> a = range(0, 20, 4) + range(20, 0, -4)
>>> b = range(0, 20, 3) + range(20, 0, -3)
>>> c = range(0, 20, 2) + range(20, 0, -2)
>>> test = izip(cycle(a), cycle(b), cycle(c))
>>> for i in range(30):
print next(test)
(0, 0, 0)
(4, 3, 2)
(8, 6, 4)
(12, 9, 6)
(16, 12, 8)
(20, 15, 10)
(16, 18, 12)
(12, 20, 14)
(8, 17, 16)
(4, 14, 18)
(0, 11, 20)
(4, 8, 18)
(8, 5, 16)
(12, 2, 14)
(16, 0, 12)
(20, 3, 10)
(16, 6, 8)
(12, 9, 6)
(8, 12, 4)
(4, 15, 2)
(0, 18, 0)
(4, 20, 2)
(8, 17, 4)
(12, 14, 6)
(16, 11, 8)
(20, 8, 10)
(16, 5, 12)
(12, 2, 14)
(8, 0, 16)
(4, 3, 18)
由于您在代码的其他地方(可能远离实际发生的
类型错误
的地方!)遇到了类型错误,因此您正在重新定义颜色。比如说
color = 'blue'
有一个
color
对象的类型是什么?@user1825408在其中输入一些示例代码-认为这与您尝试执行的操作基本相同
from pygame.locals import Color
def color_rand(c):
try:
c.r += random.randint(0,10)
except ValueError:
c.r = 0
bg = Color(0,0,0)
bg = color_rand(bg)