Spent 3 hours in a mental break down. was it worth it? No.
Numpy - Literally did everything.
Matplotlib - I used a plot from matplotlib to display the game.
Keyboard - for imput data.
Time - didn't use this in the end.
Playsound - for background music.
Ray casting is a technique that shoots out lazers from a sertian point and returns how long it took for it to hit an object, thus telling the computer how large to display certain pixels. More info: https://en.wikipedia.org/wiki/Ray_casting and yes I know wiki is probably not a great source.