Interactive Minesweeper Game Development
Software Engineering Group Project
Project Overview
In this collaborative software engineering project, we designed and developed a fully interactive Minesweeper game using Python with customTkinter for the graphical user interface. The project involved applying rigorous software design principles, producing clear UML diagrams for software logic visualization, and crafting a highly interactive, user-friendly gaming experience that adheres strictly to industry-standard UI design guidelines.
Objectives
- Develop an interactive Minesweeper game featuring customizable grid sizes (7-15 rows/columns) and multiple visually distinct themes (Classic, Loughborough University, Dark Mode).
- Implement intuitive mouse-based controls (left-click to reveal squares, right-click to flag potential mines) to ensure seamless interaction.
- Integrate robust user feedback mechanisms, including auditory cues, visual confirmations, and a comprehensive high-score recording system.
- Create and utilize UML sequence diagrams to clearly visualize the interaction logic within the software components.
Try the Game!
Below is a playable version of the Minesweeper game we developed. Click on a cell to reveal it, right-click to place a flag. Select your difficulty level using the buttons below.
Methodology
Our structured approach combined software development best practices with human-centered UI/UX design principles:
Interactive Gameplay and Control Design:
- Created intuitive mouse controls for core gameplay mechanics:
- Left-click: Reveals the hidden content beneath a square.
- Right-click: Places flags to mark suspected mine locations.
- Included an automatic reveal feature for empty squares, streamlining gameplay and improving usability by automatically uncovering adjacent safe squares.
Advanced User Feedback and Audio Integration:
- Implemented comprehensive auditory feedback including:
- Beep sounds: When clicking numbered squares.
- Thud sounds: When placing or removing flags.
- Explosion sounds: Signaling a game-over scenario.
- Trumpet fanfare: Celebrating successful game completions.
- Created a detailed high-score mechanism tracking the top 5 player attempts, capturing key player data such as user ID, time taken, and score.
Graphical User Interface (GUI) Development:
- Developed a user-friendly GUI consistent with Shneiderman's Eight Golden Rules for effective interface design, focusing on clarity, responsiveness, consistency, and user control.
- Provided clearly accessible game controls including theme selection, adjustable grid settings, restart, undo, quit options, and high-score access to maximize usability and minimize errors.
Technical Development and Code Analysis:
- Crafted robust software architecture, clearly visualized through comprehensive UML sequence diagrams detailing interactions between core software components, user inputs, memory management, and UI responses.
- Applied rigorous testing and debugging techniques, utilizing AI-based tools to assist in troubleshooting, resolving syntax errors, and optimizing the game's overall performance and user interface.
Key Features and Innovations
- Customizable Themes and Accessibility: Provided selectable themes (Classic, Loughborough, Dark Mode) tailored for diverse user preferences and enhanced visual accessibility.
- Real-time Interaction and Feedback: Every user action was instantly accompanied by corresponding visual and auditory cues, significantly enriching user engagement.
- High-Score and Player Analytics: Enabled detailed performance tracking, motivating players through competitive leaderboards displaying the top five performances.
- Advanced UI/UX Design: Adhered strictly to proven UI principles (Shneiderman's rules), ensuring an efficient, intuitive, and enjoyable user experience.
Technical Insights (Code Analysis)
- Developed a clear separation of concerns, as evidenced by comprehensive UML diagrams showing detailed component interactions (theme selection, grid management, user input handling, auditory feedback mechanisms, memory interactions).
- Utilized efficient loops and alternative condition checks within the code, optimizing performance and robustness in handling invalid inputs, user errors, and unexpected scenarios (e.g., invalid row/column entries).
Reflections and Challenges
- Successfully navigated complexities of integrating real-time user feedback (auditory and visual) alongside efficient memory management within the interactive gameplay context.
- Addressed challenges such as validating user inputs within predefined constraints (7-15 grid size), employing effective error-handling and iterative testing procedures to achieve seamless gameplay.
- Recognized the significant value of effective teamwork, structured Agile project management (Scrum), and collaborative problem-solving, contributing to an efficient development cycle and a polished final product.