Я не могу получить доступ к каким -либо обновлениям, случается с массивом (доска) всякий раз, когда я пытаюсь получить кJavascript

Форум по Javascript
Ответить
Anonymous
 Я не могу получить доступ к каким -либо обновлениям, случается с массивом (доска) всякий раз, когда я пытаюсь получить к

Сообщение Anonymous »

//GameBoard
function Gameboard() {
const rows = 3;
const columns = 3;
const board = [];

for (i = 0; i < rows; i++) {
board = [];
for (j = 0; j < columns; j++) {
// Cell function adds value=0 for each square
board.push(Cell());
}
}
const getBoard = () => board;
const printBoard = () => {
return board.map((row) => row.map((cell) => cell.getValue()));
};
const applyMark = (row, column, player) => {
return board[row][column].addMark(player);
};

return { printBoard, getBoard, applyMark };
}

function Test() {
console.log(gameBoard.printBoard());
}
//Check for winner
function Checkforwinner() {
const board = Gameboard();
const array = board
.getBoard()
.map((row) =>
row.reduce(
(accummulator, current) => accummulator + current.getValue(),
"",
),
);
//Check for winning horizontally
const winnerX = () => {
for (i = 0; i < 3; i++) {
if (array === "XXX") {
console.log(`It's ${players[0].name}'s win!!!`);
}
}
//Check for winning for first vertical line
let verticalX0 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[0].getValue() === "X") {
verticalX0 += 1;
}
}
if (verticalX0 === 3) {
console.log(`It's ${players[0].name}'s win!!!`);
}
//Check for winning for second vertical line
let verticalX1 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[1].getValue() === "X") {
verticalX1 += 1;
}
}
if (verticalX1 === 3) {
console.log(`It's ${players[0].name}'s win!!!`);
}
//Check for winning for third vertical line
let verticalX2 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[2].getValue() === "X") {
verticalX2 += 1;
}
}
if (verticalX2 === 3) {
console.log(`It's ${players[0].name}'s win!!!`);
}
};
const winnerO = () => {
for (i = 0; i < 3; i++) {
if (array === "OOO") {
console.log(`It's ${players[1].name}'s win!!!`);
}
}

//Check for winning for first vertical line
let verticalO0 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[0].getValue() === "O") {
verticalO0 += 1;
}
}
if (verticalO0 === 3) {
console.log(`It's ${players[1].name}'s win!!!`);
}
//Check for winning for second vertical line
let verticalO1 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[1].getValue() === "O") {
verticalO1 += 1;
}
}
if (verticalO1 === 3) {
console.log(`It's ${players[1].name}'s win!!!`);
}
//Check for winning for third vertical line
let verticalO2 = 0;
for (i = 0; i < 3; i++) {
if (board.getBoard()[2].getValue() === "O") {
verticalO2 += 1;
}
}
if (verticalO2 === 3) {
console.log(`It's ${players[1].name}'s win!!!`);
}
};
winnerX();
winnerO();
console.log(array);
return { winnerX, winnerO };
}

function Cell() {
let value = 0;

let addMark = (player) => {
value = player;
};
const getValue = () => value;
return { addMark, getValue };
}

function Gamecontroller(player1 = "firstPlayer", player2 = "secondPlayer") {
const board = Gameboard();
const players = [
{ name: player1, mark: "X" },
{ name: player2, mark: "O" },
];
const getPlayers = () => players;
let activePlayer = players[0];
const getActivePlayer = () => activePlayer;
const switchPlayer = () => {
activePlayer = activePlayer === players[0] ? players[1] : players[0];
};
const nextRound = () => {
console.log(board.printBoard());
console.log(`Now it's ${getActivePlayer().name}'s turn to play`);
};
const playRound = (row, column) => {
console.log(
`${getActivePlayer().name} has played in ${row}row and ${column}column`,
);
board.applyMark(row, column, getActivePlayer().mark);
checkForWinner.winnerX();
checkForWinner.winnerO();
Checkforwinner();
switchPlayer();
nextRound();
};
nextRound();
return { nextRound, getActivePlayer, playRound, getPlayers };
}

const gameBoard = Gameboard();
const gameController = Gamecontroller();
const checkForWinner = Checkforwinner();
< /code>
Я получаю правильные значения массива в GameController, но я не получаю его в CheckforWinner
, хотя, когда я впервые создал CheckForWinner, я выполнял это внутри функции Gameboard, и это дало мне результаты, которые я хотел, но я подумал о том, чтобы сделать его собственной функцией от Gameboard Function, и теперь я не получаю обновленных значений < /p> < /p>
< /p> < /p> < /p>. Использование getBoard (), а не просто доступ к переменной, она все еще не работает

Подробнее здесь: https://stackoverflow.com/questions/795 ... ng-to-acce
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»