Code - Repository

Project Summary

Dungeon Adventure is a pure python game that was developed in two major releases, with each iteration taking about three months to complete. The first release consisted of a command line interface with robust game logic and separate character classes. In the second release, additional content was added, including a user interface for desktop with TKinter, code separation, and game saving feature. The project challenged my development skills, improve their knowledge of Python, and introduce them to soft skills, such as communicating design requirements.


  • Dungeon Adventure has a user interface for desktop with TKinter. The interface allows players to interact with the game through DungeonCrawler and DungeonBrawler, the two main interfaces responsible for dungeon traversal, inventory management, item usage, and combat.

  • Separated the code into different components, such as the adventurer, dungeon, and rooms, using classes. This separation allowed for easier integration of new features and improved code quality.

  • The project uses several design patterns, including Model-View-Controller(MVC) and the Factory pattern, to implement different options. These patterns improved the project’s flexibility and adaptability.

  • Dungeon Adventure was written entirely in Python, allowing for a quick development and not limiting design requirements by runtime speed.

  • Unit testing to verify that each unit of code works as expected and catches defects or regressions. This helped to improve code quality and catch errors early in the development process.

Lessons Learned

I learned several valuable lessons during the project, such as the importance of unit testing, which helped to improve code quality and catch errors early in the development process. I also encountered challenges with integrating different components and designing modular code, particularly when refactoring the old codebase to allow for easier integration with new features. Furthermore, I learned that TKinter was not very intuitive and had some unexpected limits and inconsistent documentation.