Book Image

Kivy Blueprints

Book Image

Kivy Blueprints

Overview of this book

Table of Contents (17 chapters)
Kivy Blueprints
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
The Python Ecosystem
Index

Collision detection


The last thing that is absolutely vital for the gameplay is the collision detection, which ends the game when the bird collides with either the floor, the ceiling, or a pipe.

Checking whether we've met floor or ceiling is as simple as comparing bird.y to a ground level or screen height (taking into account the height of the bird itself in the second comparison). In KivyBirdApp, we have the following code

def test_game_over(self):
    if self.bird.y < 90 or \
            self.bird.y > self.root.height - 50:
        return True

    return False

It's a bit more complex when looking for a collision with pipes, but not substantially so. We can subdivide this next check in two: first, we test for a horizontal collision using Kivy's built-in collide_widget() method, and then check whether vertical coordinates are within limits imposed by the lower_len and upper_len attributes of a pipe we're flying into.

Hence, the revised version of the KivyBirdApp.test_game_over() method...