1st Year University Assignment

Written in C, uses SDL 2.0 to setup the window and draw to the screen.
Expects 2 players to play at the same time.

The first programming project of my first year, I decided to do more than the brief required (a simple game where a player would pick up gems) and turn it into a more feature complete game.

GitHub link

Technical Features

  • Player Snakes
    • Internally implemented using a doubly linked list.
    • The design is fairly modularised, in the future the game could theoretically have as many unique snakes as required that respond to different input.
    • The snake sprite sheet was custom made by me for this project, as I couldn’t find a suitable alternative.
    • Recoloured in the code, could potentially be spawned as any colour (not just orange/green).
  • Pickups
    • I used a simple 2D bounding box collision algorithm to detect when the player touches a pickup.
    • The amount of pickups is constant, but the types are randomised. There is a small chance that a moving knight will appear rather than a gem.
    • Knights
      • The brief for the assignment supplied me with a knight sprite sheet, expecting me to use the knight as a player character. When I decided to develop the game more I recycled the knight appearance and behaviour into a mobile pickup.
    • Gems
      • The colour is randomly decided at spawn time.


  • Constrain the player to only move forward/left/right, disallowing their head from moving ‘backwards’ and immediately killing them.