Python
Python is the language that started my journey in software development, learning it in 2018 during my time at secondary school. As such, I feel that I am quite experienced in the language, with my most notable project currently being a turn-based RPG game that features heavy use of advanced object-oriented programming alongside the extensive use of cross-table parameterised SQL. The success of my project earned the recognition of staff and student alike for its complexity and large structure.

My python project is publicly available on my github account, feel free to check it out.
What was the project
The project, as mentioned before, is a turn-based rpg game, this was a project that I designed for my computer science non-examined assessment during my A-Levels. I named the project R.RPG, and it was mostly comprised of python, with SQL being used when handling user data. The main aim of the project was to create a turn-based game that gets the user to consider the benefits and drawbacks of their every move through the use of status effects, this will be mentioned in more detail below.

The game has 3 modes of gameplay, they can fight either: a monster which will be controlled by the program, a player controlled by another user on the same computer, or another player controlled by the program. When you choose to verse the program-controlled version of either a player or monster, you can select one of four settings, which will determine how the computer will attack. The simpler difficulties uses random number generation to decide the user to attack while the harder difficulties will target players with higher attack or lower defense in order to get rid of the largest threats.

Another feature that is worth note is the special attack system, a system which can apply one of five types of special attacks which may have the ability to heal users, apply status effects and even change the way that the program targets allies. There is also an item system that can be used mid-battle to temporarily boost a heroes' stats and may also heal them as well. By providing many different options to the user, they may be required to think heavily between each turn in order to opt for an optimal outcome.
What is the status effect system?
The status effect system in its simplest form, is similar to that of a priority queue, except that a single pop operation would get rid of all of the 'priority 1' operations, as opposed to only popping a single 'priority 1'. This pop operation is called every turn in order to replicate a 'damage over time' functionality which is common in games of this type, however, the game differs significantly from others in the market due to the potential for an 'elemental reaction' to occur. An elemental reaction is an action that is applied when a hero or enemy is under a specific pair of status effect. When an elemental reaction is triggered, the enemy could be subject to different actions, such as a new elemental reaction, or even an AOE attack that will damage all of the enemies in the opposite team.

To ensure that this system is not heavily exploited by the user to ensure victory in every battle, elemental reactions are programmed as double-edges swords that will be game-changing based on the state of a battle. To further clarify this, I will go into detail on the 'dark flame' and 'backfire' status effect. This effect will allow the enemy the chance to insta-kill the user, however, it also leads to a reduction of 30% hp per turn. While this sounds like a good idea to the user, it is high risk especially if the enemy triggers a successful 'backfire' action, since this means that there is a 10% chance for each hero to be killed in that turn alone. This path of thinking means that the user not only needs to keep track of the enemies' status effect, but also their own to ensure that they have not put themselves in a vulnerable position.
Why did I chose the project
When I was focusing on an idea for an NEA project, I saw a gap in the market, that being that most of the 'strategy' turn-based RPG games did not actually rely on 'strategy' since the only focus was to max out a characters stats and choose specific teams of fixed characters that were non customisable. My aim was to create a game that targets both of these areas, and thus ended up with R.RPG. In order to prevent a similar situation to that on other RPG games, I made sure that stat and special-attack re-rolls were purely random, this means that there was no way to fix the stats and attacks that they were given, so there is no 'set team' to use to guarantee victory.

I also created this game in order to develop on my skills in software engineering. I believe that this was a success as, throughout the project, I had learned about the concept of object-oriented programming as well as vast knowledge in the area of SQL and relational databases, having implemented a relatively-large cross-table database as well as creating parametarised queries for this database.
Criticisms of my project
I would say that there were many points to improve on in my project, most notably the way that I had organised (or rather not organised) my program. All of my code was in a single file, this was an issue caused due to my limited understanding of programming at that time. Along with this, I also believe that providing a graphical user interface would allow for the game to appeal to larger audiences, however, this was not achievable within the time frame of the project.

Another strong criticism is that the game was not tested thoroughly in terms of the difficulties with respect to the user's current level, because of this, it may be possible at higher levels that battles are significantly easier/harder. This would have been fixed if there was a larger time frame for the project as it would allow for enough time to test all of these details. Another point that I could have improved on was the multi-player battle system, by allowing players to verse each other online, this will be a point that I will heavily consider in future gaming projects.