UW Washington Graduate Certificate in SDE project
ASCII-art based dungeon game with randomly generating maze
Collect 4 pillars (of object-oriented programming) to escape the dungeon
while surving through pits, using health and vision potions
Project developed using object-oriented programming with complete class documentation.
Maze generation uses self-validating algorithms to ensure pillars are obtainable & game can be won.
Adding complexity to the maze generation, there is at least 1 room that cannot entered.
PyGame is used to add music and sound features
Menus for restarting game, change sound volume, and to use potions
To reveal secret map in-game, enter the pause-menu then enter 5.
Some screenshots:
Darence: maze, DungeonAdventure, Room, gameplay, all objects, UML, sound & pause menu, art Manny: player, potion menu, pit, UML Pranav: intro, instructions, pause menu, music, exit art This assignment satisfies all 10 course objectives! C1: Use fundamental concepts of object-oriented design to write modular, extensible code C2: Use common design patterns to increase testability, readability, and maintainability of code C3: Apply skills to systematically test and debug applications C4: Recognize code smells and refactor code accordingly C5: Use data structures and algorithms from TCSS 501 in programming applications C6: Use the space time/characteristics of different search and sorting algorithms learned in TCSS 501 to choose the appropriate methods to implement. C7: Design, implement, document and debug a medium complexity program with an object hierarchy that includes interfaces and/or abstract classes and a graphical user interface, given some guidance on the design. C8: Design and implement unit tests for a medium complexity program with an object hierarchy that includes interfaces and/or abstract classes. C9: Utilize modern software engineering tools (e.g., IDEs, static checkers, unit testing frameworks, revision control systems) during the implementation of a medium complexity program. C10: Correctly employ programming language features by reading and interpreting the associated published API documentation.