This is an old revision of the document!
The primary difference between the last and current project is that instead of using arrays, linked lists are to be employed instead. Essentially, all instances of arrays in msi0 must now be retired in favor of the singly linked list. This game will utilize new struct attributes and functions to achieve this goal. The end product should feature ZERO arrays, and, if done correctly, one or more linked lists (pending designer preference).
To make your node struct, you need to take whatever you are making into a list, in this case your Sprite/Enemy/GameObject struct, and add a next pointer to it ie
struct Sprite { int X; int Y; bool Active; };
will become
struct Sprite { int X; int Y; bool Active; Sprite *next; };
Currently a list needs two things: A start and an End
struct List { Sprite *start; Sprite *end; }
A singly linked list is a group of nodes that each have some way of finding the next node in the list.
The original Space Invaders was a game where the player character was positioned at the bottom of the screen and moved solely along the x-axis. You would fight enemies who would be organized in rows and columns at the top, they would also move along the a-axis and move towards the player by one row when an alien made contact with the left and right “walls” respectively. The enemies could also shoot at the player at random. The player, in their own defense, had shields to protect them from the enemies' advance. The shield had its own health value, and as the enemies would shoot at the player, the shields would eat up the damage to spare the player but deteriorate as time went on. Eventually, they would disappear entirely. The player could move and shoot back at the enemies. This is Space Invaders in a nutshell.
The objective is to create your own personal twist on Space Invaders. This could be introducing a new theme, or mechanics, while remaining true to the original. Enemy array formation / random attacks, player shooting, hit detection, and custom structs are a MUST.
It also would not hurt to consider having custom sprites, sounds, music, and / or a score for the player.
You can get a feel for how they game is meant to be played https://freeinvaders.org/