$30
Homework 05:
Space Invaders
Instructions
In this assignment, you will be implementing Space Invaders in Mode 0. If you are not
familiar with the game, search it online, and you will find several videos and
explanations. You are free to extend the game in any way you want, but your
implementation must have the following characteristics of the original game:
● Enemies move to the side until they (or the colony) hits a wall
● When they hit the wall, they move down a bit, then back to the other side
● At least five rows of enemies
● At least three different enemy types, each with a unique appearance
● At least one type of enemy has animations
● Enemies shoot bullets, which take a life from the player if they hit
● Player shoots bullets, which destroy enemies if they hit
● Player’s lives are displayed during the game
Your game must have the following additional characteristics:
● Coded entirely in Mode 0
● Meaningful comments throughout the code
● The following states: Start, Game, Pause, Win, and Lose
● Sprites used for the enemies and player
● Transparency in the sprite images
● The following controls:
○ Left – Moves the player left
○ Right – Moves the player right
○ A–Fire
○ Start – Pause the game
You do not have to (but are welcome to) implement the following characteristics of the
original game.
● Barriers between the player and enemies
● Enemies move as a single block when the edge of the block hits the wall
● A bonus enemy occasionally appears at the top
● Only the bottom row of enemies shoot bullets
● The game speeds up over time
Tips
● Start early. This is the hardest (and last) homework of the class. If you realize a
problem early, come to office hours
● If you don’t feel artistic, find the sprites for this game somewhere online, and
copy them onto your spritesheet in Usenti
● Get the game working in the following order:
1. Make the state backgrounds in Usenti (very basic, for now)
2. Get the state machine working in-game
3. Make the player sprite in Usenti (very basic, for now)
4. Get the player moving in-game
5. Make the enemy sprites in Usenti (very basic, for now)
6. Get the enemies appearing in the rows in-game
7. Get the enemies moving down at the sides, then back the other way
8. Make the bullet sprite in Usenti (very basic)
9. Get the player shooting bullets
10.Have the bullets destroy enemies
11.When all enemies are destroyed, win the game
12.When the enemies reach the player, lose the game
13.Make the lives sprite in Usenti (very basic, for now)
14.Get the lives displaying in-game
15.Get the enemies shooting
16.Have the enemy bullet hitting the player remove a life
17.When all lives are gone, lose the game
18.Double-check all requirements are met
19.Make the state screens prettier, if desired
20.Make the sprites prettier, if desired
21.Add other game advancements, if desired
Submission Instructions
Compress your entire project folder, including all source files, the Makefile, and
everything produced during compilation (including the .gba file) into a single .zip file.
Submit this .zip on Canvas. Name your submission HW05_FirstnameLastname, for
example: “HW05_SamhanDobo.zip”.