first commit
This commit is contained in:
45
connect4.js
Normal file
45
connect4.js
Normal file
@@ -0,0 +1,45 @@
|
||||
const PLAYER1 = "red";
|
||||
|
||||
const PLAYER2 = "yellow";
|
||||
|
||||
function createBoard(board) {
|
||||
// Inject stylesheet.
|
||||
const linkElement = document.createElement("link");
|
||||
linkElement.href = import.meta.url.replace(".js", ".css");
|
||||
linkElement.rel = "stylesheet";
|
||||
document.head.append(linkElement);
|
||||
// Generate board.
|
||||
for (let column = 0; column < 7; column++) {
|
||||
const columnElement = document.createElement("div");
|
||||
columnElement.className = "column";
|
||||
columnElement.dataset.column = column;
|
||||
for (let row = 0; row < 6; row++) {
|
||||
const cellElement = document.createElement("div");
|
||||
cellElement.className = "cell empty";
|
||||
cellElement.dataset.column = column;
|
||||
columnElement.append(cellElement);
|
||||
}
|
||||
board.append(columnElement);
|
||||
}
|
||||
}
|
||||
|
||||
function playMove(board, player, column, row) {
|
||||
// Check values of arguments.
|
||||
if (player !== PLAYER1 && player !== PLAYER2) {
|
||||
throw new Error(`player must be ${PLAYER1} or ${PLAYER2}.`);
|
||||
}
|
||||
const columnElement = board.querySelectorAll(".column")[column];
|
||||
if (columnElement === undefined) {
|
||||
throw new RangeError("column must be between 0 and 6.");
|
||||
}
|
||||
const cellElement = columnElement.querySelectorAll(".cell")[row];
|
||||
if (cellElement === undefined) {
|
||||
throw new RangeError("row must be between 0 and 5.");
|
||||
}
|
||||
// Place checker in cell.
|
||||
if (!cellElement.classList.replace("empty", player)) {
|
||||
throw new Error("cell must be empty.");
|
||||
}
|
||||
}
|
||||
|
||||
export { PLAYER1, PLAYER2, createBoard, playMove };
|
||||
Reference in New Issue
Block a user