Shoot'Em Game
Write a Python program using the Turtle module that allows the user to play a game in which they shoot at moving "enemies" to earn points. The movement does not need to be complex, it is more important that the "enemies" are created such that they do not all converge on the player at once.
This is your final game using just Turtle Graphics and also a look forward to working with the Arcade framework by organizing your game into Classes with methods. Start by thinking about the active game elements that will be drawn on the screen each as separate objects, and what attributes and methods they might have. Your game should also utilize multiple lists (for the enemies and the shots at least) that need to be updated and checked for collisions.
This game is based loosely on the following games: Asteroids, Space Invaders, Tank Defender, Duck Hunt, or Centipede.
Getting Started
You can write this game from scratch, by extending one of the games you made earlier in the semester, or by starting with a template (without or with classes).
Specifications
Feel free to be creative, and keep your ideas at your skill level, but here are some expected features to be completed:
- any number of moving objects that are created algorithmically (i.e., using a loop and stored in a list) whose starting value is stored in a variable at the the top of the program
- an object that is controlled by the player (e.g., using the mouse or keys to move)
- allow the player to shoot a bullet at the moving objects
- a score that is updated when objects are hit
- an end condition for the game, such as clearing all the objects or counting down an amount of time (i.e., when it gets to zero, the game should end)
- stop the game actions and display separate winning and losing messages when the game ends
Once you have the basic game features working, you can add more features to make your game more fun to play, such as:
- multiple bullets: allow the player to shoot any number of bullets (i.e., stored in a list that is checked against the list of moving objects)
- reset: make a standard starting situation (like the player is in the center of the screen and the obstacles are back at the top), such that the game "resets" after losing a life or starting a level
- lives: so that game pieces reset and the player gets multiple chances to play the game before it ends
- score: make different point values for different objects or based on how long the game has been played
- levels: so that game pieces reset and some aspect of the game harder (e.g., faster, more obstacles, less distance) after a certain number of points or time
- waves: create moving objects in different patterns (using loops and arithmetic)
- effects: give different moving objects different effects on the game (i.e., different response to being hit or act as power-ups)
- restart: reset all the game objects and options to their starting configuration as if starting over
In the comment at the top of the Python file add:
- Your name
- How long you spent coding it
- How to play your game (so I know how to play the game and what you intended to do and what is not completely working)
- Discussion of the fixed values you choose to make your game fun to play: the size of the game objects, number of obstacles, various movement speeds, and any random ranges