parent
20f98b1749
commit
bc3e4994ec
@ -0,0 +1,112 @@
|
||||

|
||||
|
||||
# WDI-PANTHALASSA
|
||||
|
||||
---
|
||||
Title: Tic Tac Toe<br>
|
||||
Type: Homework<br>
|
||||
Duration: Weekend <br>
|
||||
Creator:
|
||||
Thom Page <br>
|
||||
Course: WDIr-Panthalassa<br>
|
||||
Competencies: JS DOM manipulation, loops, conditionals, functions<br>
|
||||
|
||||
---
|
||||
|
||||
# Tic Tac Toe
|
||||
|
||||
## Introduction
|
||||
|
||||
So far, we have been writing functions, working with
|
||||
loops, and writing conditionals. 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.
|
||||
|
||||
## Exercise
|
||||
|
||||
#### 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 `X` and `O` in 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
|
||||
|
||||
---
|
||||
|
||||
- Construct an `index.html` to be your starting point on this
|
||||
project. Add your necessary HTML tags, including `script` and
|
||||
`link` tags 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 `id` and `class` on clickable
|
||||
elements will help you wire this up in JavaScript afterwards.
|
||||
|
||||
<hr>
|
||||
** Commit your work.** <br>
|
||||
The commit message should read: <br>
|
||||
"Commit 1. Constructed gameboard".
|
||||
<hr>
|
||||
|
||||
- JavaScript portion will be next:
|
||||
|
||||
* Locate the element first to use it within your app. Think about
|
||||
using `document.getElementById`, `document.getElementsByClassName` or 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
|
||||
`click` events 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 `X` or an `O`.
|
||||
|
||||
|
||||
- Display a message to indicate which turn is about to be played
|
||||
|
||||
|
||||
<hr>
|
||||
** Commit your work.** <br>
|
||||
The commit message should read: <br>
|
||||
"Commit 2. Board is clickable and tracks moves".
|
||||
<hr>
|
||||
|
||||
- Determine a set of winning combinations. Check those
|
||||
combinations on the board contents after every move.
|
||||
|
||||
<hr>
|
||||
** Commit your work.** <br>
|
||||
The commit message should read: <br>
|
||||
"Commit 3. Winning conditions established".
|
||||
<hr>
|
||||
|
||||
|
||||
- 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
|
||||
|
||||
<hr>
|
||||
** Commit your work.** <br>
|
||||
The commit message should read: <br>
|
||||
"Commit 4. Game is complete".
|
||||
<hr>
|
||||
|
||||
|
||||
** BONUS **
|
||||
- Write an AI that will play against you and make random moves.
|
||||
|
||||
<hr>
|
||||
** Commit your work.** <br>
|
||||
The commit message should read: <br>
|
||||
"Commit 5. Game is playable against AI".
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
#### 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.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
Loading…
Reference in new issue