Python 3.x 碰撞检测*部分*工作正常。不太清楚为什么Python3.3与Pygame一起使用

Python 3.x 碰撞检测*部分*工作正常。不太清楚为什么Python3.3与Pygame一起使用,python-3.x,pygame,Python 3.x,Pygame,基本上,我对Python和游戏制作非常陌生,但我以前编写过很多代码。 我正在做一个简单的游戏,只是为了玩一个游戏,基本上是一个球碰到其他一些球,当球碰到它们时,它们会删除 目前它工作正常,但有时它不会记录一些球上的碰撞。 这是我的碰撞和重画代码 pygame.draw.rect(screen,(0,0,0), (50,50,edge_x,edge_y)) screen.blit(ball,(x,y)) for food in foods: if food

基本上,我对Python和游戏制作非常陌生,但我以前编写过很多代码。 我正在做一个简单的游戏,只是为了玩一个游戏,基本上是一个球碰到其他一些球,当球碰到它们时,它们会删除

目前它工作正常,但有时它不会记录一些球上的碰撞。 这是我的碰撞和重画代码

 pygame.draw.rect(screen,(0,0,0), (50,50,edge_x,edge_y))
    screen.blit(ball,(x,y))
    for food in foods:
            if food.x  < x+35 and food.x > x and food.y  < y +35 and food.y > y or food.x  < x-35 and food.x > x and food.y  < y -35 and food.y > y:
                    foods.remove(food)
                    Score = Score + 1
                    break
    for food in foods:
            screen.blit(foodImage, food)
            screen.blit(label, (100, 10))
pygame.draw.rect(屏幕,(0,0,0),(50,50,边缘x,边缘y))
屏幕光点(球,(x,y))
对于食品中的食品:
如果food.xx和food.yy或food.xx和food.yy:
移除(食物)
分数=分数+1
打破
对于食品中的食品:
屏幕。blit(食品图像、食品)
筛网布利特(标签,(100,10))
我想它可能没有检测到它的原因是因为我的碰撞与for循环在精灵列表中的位置不同步,但我可能错了


有什么想法吗?

从你的代码中还不完全清楚:你的球的尺寸是多少?每个方向都是35像素吗?Pygame有自己的碰撞检测功能,使用Rect类可能会更好。此外,我还推荐了一个关于使用Pygame制作游戏的介绍(本书后面将介绍一个使用Pygame的游戏),然后是(如何使用Pygame制作多个游戏的详细信息),这两个都可以在线免费阅读。第一本书只制作了一个基于图形的游戏,但是非常接近你想要做的。我实际上设法用if food.xx+10修复了它。我做错了的是我不允许碰撞从各个方向进行,因此一些没有触发只是因为我没有告诉它这样做。真傻。但是谢谢你的那本书,我要一本。