Pacman
C++Repo Link
This is one of the first games that I developed when working through my bachelors degree. We were tasked with creating a clone of the game Pacman with a lot of the base functionality being provided through tutorials, such as, loading textures, collision, movement etc. Additional marks could be gained by adding additional features that are not present in the tutorials, for this I gave Pacman additional lives with a small amount of invulnerability after taking damage, as well as creating a level editor.
Adding lives was very simple as it just required an additional variable and a timer whereas the level editor involved more interesting components. Through the provided tutorials, a simple level was provided that showcased how to load in a level from a text file with each symbol being a different tile or entity. The level editor expanded on this by allowing the user to click anywhere in an empty scene to place a tile and press various keys to change what is placed. This allowed more detailed levels to be created easily without having to suffer through a text file full of random characters. The user could then save the level to a file.
The level editor did, however, have a number of issues, the first of which being that levels would not automatically be added to the game, as the available levels are hardcoded. Additionally, the editor itself was relatively difficult to use as there was no way to know the currently selected tile and the keys to select tiles are only shown in the console which would not appear in the built game. In hindsight, it would have been possible to dynamically load all of the levels from a file a develop UI that allows players to cycle through each level and select one, as well as this, it would be possible to produce UI for the level editor to make it easier to select tiles.
Overall, I believe this project was pretty good for my first attempt at developing anything in C++ and helped me to develop skills that allowed me to produce some of the more complex ideas within the project, however, admittedly, the project features very amateur code which makes little use of any advanced programming concepts.