You can clone with
Add UI for timers, modified has_[powerup]() methods to return time left.
Improved the shotgun powerup drawing
Added the Shotgun powerup
Add support for multiple bullets.
Get rid of the running variable.
Adding DISPLAY_FPS for debugging.
Whoops. Left in a high powerup chance while testing.
Created a render() method for Powerup.
Added an Explosion class, and created Bubble.render()
Moved render_bullet() and render_ship() to the Bullet and Ship classes.
Whoops. Didn't delete those uncommented lines in the last check in. T…
…aking them out now.
Refactored the GameScreen.render() method, and got rid of the green b…
…ox drawing code.
Refactoring GameScreen's constructor.
Fixed a regression where the bubbles freeze after the player dies.
Refactored mark_score() and apply_powerup()
Fixed a self.world.ship is None bug.
Fixing a bug where self.ship can be None
Simplifying init_level() code.
Improved the GameWorld.update() code.
Added comments to GameWorld.update().
Formatting changes and comments to init_level().
Moved freeze timer logic into the Ship class, and some other minor ch…
Moved shoot_at() to the Ship class.
Created a Bullet class.
Converted shield_timer member to a bunch of methods.
Created a Ship class and moved code into it.
Added some more comments to Bubble and Powerup classes.
Improve make_bubble(), and renamed it to bubble_factory().
Renamed Bubble2D class to ObjectOnMap and got rid of random_speed().
Simplifying random_speed() and correcting random_position(), also add…
Minor changes to the collides_with() method.
Simplified the Bubble2D is_out() method.