collision = iscollision(firex, firey, cactusx[i], cactusy[i], )
if collision:
firex = 150
fire_state = "ready"
score += 1
print(score)
cactusx = random.randint(400, 736)
cactusy = random.randint(36, 450)
for i in range(num_of_cactus):
cactusx[i] += cactusx_change[i]
cactusx_change[i] = -4
collision = iscollision(firex, firey, cactusx[i], cactusy[i], )
我试图制作一个pygame,但有时会出现此错误,
这些是一些代码行,这些错误会显示出来。它位于cactusx[i] += cactusx_change[i]
行。
答案 0 :(得分:1)
random.randint(400, 736)
返回一个不可订阅的Python int eger。
您没有指定cactusx_change
是什么或它来自何处,因此我们无法对此进行判断。
答案 1 :(得分:0)
根据Python文档:
random.randint(a, b)
:返回随机的整数 N
,以使a <= N <= b
。将catcusx设置为random.randint(400, 736)
时,就是将其设置为整数值。在它的正下方,您将cactusx当作数组下标,因为它是整数而无法执行。
解决方案取决于您要完成的工作,但不能对整数下标。
答案 2 :(得分:0)
如果检测到碰撞,则要更改仙人掌的位置,这会导致随机碰撞。因此,您必须更改cactusx[i]
和cactusy[i]
:
cactusx = random.randint(400, 736)
cactusy = random.randint(36, 450)
cactusx[i] = random.randint(400, 736)
cactusy[i] = random.randint(36, 450)