3.9 KiB
WDI-PANTHALASSA
Title: Tic Tac Toe
Type: Homework
Duration: Weekend
Creator:
J. Nappy
Adapted by:
Thom Page
Course: WDIr-Panthalassa
Competencies: JS DOM manipulation, loops, conditionals, functions, game logic
Tic Tac Toe
Introduction
So far, we have been writing functions, working with loops, and writing conditionals, and we also learned about how HTML elements are styled and behave in the DOM, including how to make elements responsive.
For your weekdend homework, you'll be building a tic tac toe game in HTML, CSS, and writing the logic for the game in JavaScript.
It is up to you to figure out how each piece should work. Pseudo-code the problems, talk it out with a rubber duck, research the problems, and above all ... talk to your classmates!
Think about your program design, when and if you should use functions, loops, conditionals, etc. Your code should be modular and extensible.
And remember, at the end of this process your code should be your own.
Requirements
- The gameboard should be responsive, both horizontally and vertically
- A user should be able to click on different squares to make a move
- Each click will alternate between marking an
XandOin turn - Upon marking of an individual cell, use JavaScript to add a class to each cell to display separate colors
- A cell should not be able to be replayed once marked
- Add a reset button that will clear the contents of the board
Directions
-
Construct an
index.htmlto be your starting point on this project. Add your necessary HTML tags, includingscriptandlinktags to link to your JavaScript and CSS, respectively. -
Before you even start working with JavaScript, construct the gameboard. The gameboard page should include the 3x3 grid and at minimum, a reset button. Using
idandclasson clickable elements will help you wire this up in JavaScript afterwards. -
Using what you know about responsive design, make sure the gameboard will resize with the browser window, maintaining the right proportions
** Commit your work.**
The commit message should read:
"Commit 1. Constructed responsive gameboard".
-
JavaScript portion will be next:
-
Locate the element or elements first to use within your app. Think about using
document.getElementById,document.getElementsByClassNameor something similar to locate your target elements. Try this in your console to make sure your selection works. -
After finding the elements, start writing logic to listen for
clickevents on those elements. -
You will also need a variable to keep track of moves - this will be used to indicate whether or not to draw an
Xor anO.
-
-
Display a message to indicate which turn is about to be played
** Commit your work.**
The commit message should read:
"Commit 2. Board is clickable and tracks moves".
- Determine a set of winning combinations. Check those combinations on the board contents after every move.
** Commit your work.**
The commit message should read:
"Commit 3. Winning conditions established".
- After the necessary moves have been played, stop the game and display the winner if one player ends up winning with three in a row
- When the user clicks the 'reset' button, they can play a fresh game
** Commit your work.**
The commit message should read:
"Commit 4. Game is complete".
** BONUS **
- Write an AI that will play against you
** Commit your work.**
The commit message should read:
"Commit 5. Game is playable against AI".
Deliverable
Here are some screenshots to give you a rough guide of what you'll be creating. Feel free to get creative with how you style your interface.


