This project aims to develop an advanced version of the Tic Tac Toe game, featuring user authentication, personalized game history, and an intelligent AI opponent. The game supports both player-vs-player and player-vs-AI modes, enabling users to log in, track their game history, and analyze past games. The project adheres to best practices in software engineering, including secure user management, rigorous testing, and professional version control workflows.
- Game Logic Implementation: Basic mechanics for player turns, win/tie detection.
- AI Opponent: Minimax algorithm with alpha-beta pruning for strategic moves.
- Graphical User Interface (GUI): Interactive board, login/registration forms, game history views.
- User Authentication and Management: Secure login/registration system with password hashing and session management.
- Personalized Game History: Save and view game histories, replay past games.
- Testing and Quality Assurance: Comprehensive unit tests with Google Test, integration tests.
- CI/CD Integration: GitHub Actions for automated testing and deployment.
- Performance Optimization: Monitor and optimize response time and resource utilization.
- Programming Language: C++
- OOP Techniques: Utilized for modular and maintainable code.
- Testing Framework: Google Test
- Version Control System: Git with GitHub as the remote repository.
- CI/CD Tools: GitHub Actions
- Database: SQLite or custom file storage for user data and game histories.
- Security Practices: Secure hashing algorithms for password storage.
- GUI Framework: Qt or similar libraries suitable for C++.
- Software Requirements Specification (SRS): Functional and non-functional requirements, including game rules, system behavior, and performance requirements.
- Software Design Specification (SDS): Software architecture and design details, including UML diagrams.
- Codebase: Complete source code following Google C++ Style Guidelines.
- Testing Documentation: Testing strategies, unit and integration tests, and coverage reports.
- CI/CD Pipeline Configuration: Scripts for building, testing, and deploying the software.
- Performance Measurement and Optimization: Report on performance benchmarks and optimization efforts.
- Version Control Repository: A Git repository containing all project components.