擅长:python、mysql、java
<p>图像本身没有位置。不能测试rect与未放置在世界中的对象之间的碰撞。我建议创建一个类Bird和一个类管道,这两个子类都是pygame.Sprite。</p>
<p>Pygame已经内置了碰撞检测。</p>
<p>一个简短的例子</p>
<pre><code>bird = Bird()
pipes = pygame.Group()
pipes.add(pipeTop)
pipes.add(pipeBottom)
while True:
if pygame.sprite.spritecollide(bird,pipes):
print "Game Over"
</code></pre>
<p>编辑:</p>
<p>别害怕上课,你迟早会用到的。
如果您真的不想使用sprite,可以使用birds rect和pipe并调用<code>collide_rect</code>来检查它们是否重叠。</p>
<p>编辑2:</p>
<p>从pygame文档修改的一个示例Bird类</p>
<pre><code>class Bird(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("bird.png").convert_alpha()
# Fetch the rectangle object that has the dimensions of the image
# Update the position of this object by setting the values of rect.x and rect.y
self.rect = self.image.get_rect()
</code></pre>
<p>然后你可以添加一些方法,比如移动,这将使鸟在重力的作用下向下移动。</p>
<p>这同样适用于<code>Pipe</code>,但是您可以创建一个空曲面,并用颜色填充它,而不是加载图像。</p>
<pre><code>image = pygame.Surface(width,height)
image.fill((0,200,30)
</code></pre>