79 so... today I had to show the project for school.
I think everything wend good, though the teachers couldn't beat most games (only 1 out of 3). However, as one of the points was that it need to have replay value (and he tried to beat them, a lot) I guess its a good thing? I mean, he defiantly played them a good amount of time.
Also, because I feel like it: That project was a clusterfuck. It was the first programming project on this school and well, it was year 1 so the skill level was about 0 when it comes to programming. Actually, in our dev lessons we only got to variables, while and if. No functions, not how to work inside multiple files, nothing.
To make matters worse, you also where forced to use pygame despite the fact that you didn't get graded on your code (a wtf in itself in my opinion). Now, at first glance pygame may look ok and simple until you realize that you need to write an update loop by yourself, the vector api (which in the documentation is hiding behind math) is marked experimental. Despite the fact that vectors are kind of important when working with games.
Also,I'm pretty certain you can't directly use vectors to move things around and stuff. Which makes that whole api kind of useless. Also, draw order is important, but there is very little inside pygame itself to aid with that. The best it has is sprite groups, so you just need to draw those in the correct order but those have a nasty surprise
The Group does not keep sprites in any order, so the draw order is arbitrary.
Meaning that if 2 or more sprites in the same group overlap you have absolutely no control over which one gets drawn over which and the order may in theory change EVERY FRAME! This basically makes the whole group concept useless.
Another "fun" Gotcha in pygame is that it has 2 music api's. One uses channels, this means it is easy to work with multiple sounds however this can't use .MP3 files. The other one however can work with .MP3 files but doesn't use channels and is thus pretty much garbage.
Also, if you want collision, don't use the collision method but look at the mask api. Unless of course you only work with squares, then do whatever you want.
No real in build support for buttons, let alone input fields of any kind (because you never want to know someone's username /s ).
You can only move object around using world coordinates. So, if you rotated a rectangle by some degrees and want to move it in the direction it points at you can't just say move forward by X.
Everything counted together made it actually more difficult to write a simple 2D gridded dungeon crawler then it was to make a VR First person shooter, and that was without much if any experience with even playing VR games and in a language I never used.