- Fork this repository into your own GitHub account. If you don't have a GitHub account, please create one.
- Commit all your changes to your forked repository, following clean Git commit hygiene.
- Demonstrate clean Git commit hygiene, following best practices for commit messages and organizing your commits.
- For guidelines on clean Git commit hygiene, you can refer to this source.
- Place all your source code files in the
src
folder. - The bonus challenge is optional but greatly welcomed. You can choose to tackle it if you'd like.
- Include comments in your code to explain your approach, algorithms, and any important details.
- Additionally, if possible, include test cases for your solutions.
You are tasked with creating a Tic Tac Toe web application using HTML, CSS, and JavaScript. The application should allow two players to take turns playing the game. The game should detect when a player has won or if the game has ended in a draw. The design and user experience are important aspects of this project.
- Create a 3x3 grid layout using HTML and CSS to represent the Tic Tac Toe board.
- Implement the game logic using JavaScript to handle player moves, win conditions, and draw scenarios.
- Display the current player's turn and game status (win, draw) on the web page.
- Allow players to click on empty cells to make their moves. Prevent players from overwriting existing moves.
- When a player wins, highlight the winning cells and display a congratulatory message.
- When the game ends in a draw, display a message indicating the draw.
- Correctness of the game logic.
- Proper handling of player moves and board updates.
- User interface design and user experience.
- Code organization, clarity, and maintainability.
- Proper usage of HTML, CSS, and JavaScript.
- Documentation explaining how to run the application and any additional features you've implemented.
- Ensure responsive design, so the web application is usable on both desktop and mobile devices.
- Add animations or transitions to enhance the user experience.
- Implement an AI opponent that the player can play against.