Coding Mania

Fall 2021

Tools:

Java

Coding Mania is a group project for Introduction to Software Engineering CMPT276 course at Simon Fraser University. This project is a 2D arcade-style game where the main character, a programmer, needs to gather all the code snippets (regular rewards) before running the code (endpoint). The game is set on a board where the character navigates while avoiding errors (punishments) which decrease the code quality (score). Bugs are present on the board, and an encounter between the character and a bug leads to an immediate loss. The game also features energy drinks (bonus rewards) that appear on the board to enhance the player's score.
The game was developed using an object-oriented approach (OOP) with a focus on the Entity-Component-System model. Classes were created for the entities, game states, and user inputs, while also implementing manager classes for handling entities and game states. Entities included the player character, enemies, and various rewards. External libraries such as AWT (Abstract Window Toolkit) and IO were utilized for rendering graphics and handling user inputs.
The game code went through a series of modifications for efficiency and better user experience, with changes in the implementation of certain methods, inclusion of additional features, and reworking of some initial designs. For example, we added threading to create a tick timer to indicate when each entity should move and update, added a render method for better graphics, and implemented various updates in entity management.
Thorough unit and integration tests were conducted to ensure the functionality of all game features. These tests covered constructor methods, value manipulations, interactions between entities, and responses to user inputs. These tests helped identify bugs and led to the modification of certain production codes to enhance the game's performance and user experience. Automated testing was used alongside manual functional and UI testing.
Overall, the development of "Coding Mania" involved effective teamwork, efficient task division, continuous learning, and a shared commitment to enhancing product quality.

Back to Projects

More pictures