//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
Я не могу получить доступ к каким -либо обновлениям, случается с массивом (доска) всякий раз, когда я пытаюсь получить к ⇐ Javascript
Форум по Javascript
1741753726
Anonymous
//GameBoard
function Gameboard() {
const rows = 3;
const columns = 3;
const board = [];
for (i = 0; i < rows; i++) {
board[i] = [];
for (j = 0; j < columns; j++) {
// Cell function adds value=0 for each square
board[i].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[i] === "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()[i][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()[i][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()[i][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[i] === "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()[i][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()[i][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()[i][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 (), а не просто доступ к переменной, она все еще не работает
Подробнее здесь: [url]https://stackoverflow.com/questions/79502625/i-cant-access-any-updates-happens-to-an-array-board-whenever-im-trying-to-acce[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия