This is a vertically scrolling space themed shmup (or Shoot'em up) that I am creating using the Pygame module in Python. This is the first game I ever made and the first program I've written of this size and scope. I am continuously changing and adding to this game as I learn more.
To play Star Fighter you must have Python and Pygame installed.
I started learning Pygame using Clear Code's Tutorials and strongly recommend starting with The ultimate introduction to Pygame if you are interested in learning how to make games in Pygame.
Your ship starts at the center of the screen. You can move in four directions and fire upwards. There is a short cooldown timer between each shot so aim carefully. You have three hearts and if you get hit by a laser or crash into an alien ship you will take damage and lose these hearts. If you lose three hearts it's game over and your score is reset. Try to get the high score.
- WASD or Arrow Keys to move
- Spacebar to shoot laser
- Hold F key to move twice as fast
- ALT + ENTER to toggle full screen
- ESC to pause
Each alien sprite behaves differently and is worth a different score value based on color:
Slow - 100 Points
Moderate Speed - 200 Points
Fast - Moves in a Zigzag Pattern - 300 Points
Very Fast and Rare - 500 Points
- Player ship sprite can still move and shoot lasers briefly after death
- Explosion animation sprites are not transparent?
- Add twin laser powerup
- Display sprites of aliens on screen with how many points they are worth
- Allow player to enter initials if they get the high score
- Figure out how to use increasing score to increase rate of alien and laser spawn
- Show controls in game (create images with WASD, Spacebar and arrow keys, etc)
- Menu and options, allow player to change volume and difficulty
- Get extra hearts, maybe items that float down or reward for high score?
- Quit game option
- Enemy animations
- Bosses?
- Multiple levels/stages?
- Speed boost that uses energy?
- Replace Galaga ship with original player sprite
- Replace Space Invaders with original enemy sprites
- Replace placeholder music with original music
- Add timer class, remove this responsibility from GameManager
- Include a state manager class to manage game_active status. Figure out how to integrate this with the game manager class
- Use
channel_#.play(music, -1)
to loop instead? - Try pygame.mixer.music instead of the sound class for music, gives more control like queue music.