像素指数超出范围

时间:2014-02-21 00:15:31

标签: python pygame

下午好,我想问一下我在游戏中遇到的这个错误。我在pygame做一个简单的游戏,但我无法发现为什么我有这个错误。我将打印相关代码:

bottomX=-1000  
bottomY=300


FishList = [] 
NumFish=0

while NumFish<20:
    xfish=random.randrange(5,2550) 
    yfish=random.randrange(20,150) 

    IsInWater=(bottom.get_at([xFish+5,yFish+7])== (80,86,210,255))
    if IsInWater: 
        FishList.append([xFish,yFish])

    NumFish= NumFish + 1
for i in range(len(FishList)):
        [xFish,yFish] = FishList[i]

        mXp = random.randrange(-5,5) #Move in X
        mYp = random.randrange(-5,6) #Move in y

        FishStillInWater = (xFish+mXp+5>0 and xFish+mXp+5<3000 and yFish+mYp+7>10 and yFish+mYp+7 < 200 and (fundo.get_at([xFish+mXp+5,yFish+mYp+7])== (80,86,210,255))) 
        if FishStillInWater:
        # If in water, moves
            FishList[i][0] = xFish + mXp
            FishList[i][1] = yGish + mYp
            pygame.draw.rect(screen,red,[bottomX + FishList[i][0],300 + FishList[i][1],15,10],0)




        for x in range(-7,7):
            for y in range(-5,5):
                FishDies=screen.get_at([bottomX + FishList[i][0]+x,300 + FishList[i][1]+y])==(0,0,0,255)# 0,0,0,255 is the color of the "bullets"
                if FishDies:
                    yFish = 10000
                    points= points + 5

错误是:

FishDies = screen.get_at([bottomX + FishList [i] [0] + x,300 + FishList [i] [1] + y])==(0,0,0,255) IndexError:像素索引超出范围

对于你们这些时间的人们,希望你们可以帮助我,如果你需要其他任何东西来理解代码告诉我plz

1 个答案:

答案 0 :(得分:0)

让我们分解一下。

错误在于,您想要访问不在表面上的像素。这是你的计算:

最小的鱼坐标如下:(5,20),而最大的是(2550,150)。

然后,您想要检查像素的颜色,但鱼可能已经移出屏幕,或者只有一部分移动了。

我建议使用普通collide_rect检查是否有子弹碰撞。关于如何做到这一点有很多例子。