更改获胜行的文本颜色
Change text color of a winning line
所以我一直在研究 JS tic tac toe 游戏。已经准备就绪,我最不想做的就是更改获胜行的文本颜色,但我似乎无法找到一种方法来获取包含的确切获胜行,然后更改文本颜色。
这是我获胜条件的代码:
function findCell(x) {
return document.getElementById("cell" + x).innerText;
}
function checkLine(x, y, z, letter) {
var triple = false;
if (findCell(x) == letter && findCell(y) == letter && findCell(z) == letter) {
triple = true;
}
return triple;
}
function victory(letter) {
var winner = false;
if (checkLine(1, 2, 3, letter) ||
checkLine(4, 5, 6, letter) ||
checkLine(7, 8, 9, letter) ||
checkLine(1, 4, 7, letter) ||
checkLine(2, 5, 8, letter) ||
checkLine(3, 6, 9, letter) ||
checkLine(1, 5, 9, letter) ||
checkLine(3, 5, 7, letter)) {
winner = true;
}
return winner;
}
我也有变色的功能,就是不知道用在什么地方
var lettercolor = [0, 0, 0];
var color = ["red"]
function changeColor(i) {
lettercolor[i] = (lettercolor[i] + 1) % color.length;
document.getElementById( ? ? ? ? ? ).style.color = color[lettercolor[i]];
}
此外,我不想要任何 jQuery 东西...我想做这个简单的香草 JS。
由于您在 checkLine
中找到了三元组,如果通过遍历 x y z
单元格参数找到了三元组,则可以突出显示该函数中的所有此类单元格:
function checkLine(x, y, z, letter) {
const cells = [x, y z].map(num => document.getElementById("cell" + num));
if (cells.every(cell => cell.textContent === letter)) {
for (const cell of cells) {
cell.style.color = 'red';
}
return true;
}
}
只需将您的 if 语句分成不同的获胜集。然后,在返回 winner
布尔值后,您可以应用样式。
function victory(letter) {
if (checkLine(1, 2, 3, letter)) {
changeWinnerColors([1, 2, 3]);
return true;
}
// Check your other combinations...
// If no combination matches, thereis no winner
return false;
}
function changeWinnerColors(cells) {
for(var cell of cells)
changeColor(cell);
}
function changeColor(i) {
lettercolor[i] = (lettercolor[i] + 1) % color.length;
document.getElementById(`cell${i}`).style.color = color[lettercolor[i]];
}
所以我一直在研究 JS tic tac toe 游戏。已经准备就绪,我最不想做的就是更改获胜行的文本颜色,但我似乎无法找到一种方法来获取包含的确切获胜行,然后更改文本颜色。
这是我获胜条件的代码:
function findCell(x) {
return document.getElementById("cell" + x).innerText;
}
function checkLine(x, y, z, letter) {
var triple = false;
if (findCell(x) == letter && findCell(y) == letter && findCell(z) == letter) {
triple = true;
}
return triple;
}
function victory(letter) {
var winner = false;
if (checkLine(1, 2, 3, letter) ||
checkLine(4, 5, 6, letter) ||
checkLine(7, 8, 9, letter) ||
checkLine(1, 4, 7, letter) ||
checkLine(2, 5, 8, letter) ||
checkLine(3, 6, 9, letter) ||
checkLine(1, 5, 9, letter) ||
checkLine(3, 5, 7, letter)) {
winner = true;
}
return winner;
}
我也有变色的功能,就是不知道用在什么地方
var lettercolor = [0, 0, 0];
var color = ["red"]
function changeColor(i) {
lettercolor[i] = (lettercolor[i] + 1) % color.length;
document.getElementById( ? ? ? ? ? ).style.color = color[lettercolor[i]];
}
此外,我不想要任何 jQuery 东西...我想做这个简单的香草 JS。
由于您在 checkLine
中找到了三元组,如果通过遍历 x y z
单元格参数找到了三元组,则可以突出显示该函数中的所有此类单元格:
function checkLine(x, y, z, letter) {
const cells = [x, y z].map(num => document.getElementById("cell" + num));
if (cells.every(cell => cell.textContent === letter)) {
for (const cell of cells) {
cell.style.color = 'red';
}
return true;
}
}
只需将您的 if 语句分成不同的获胜集。然后,在返回 winner
布尔值后,您可以应用样式。
function victory(letter) {
if (checkLine(1, 2, 3, letter)) {
changeWinnerColors([1, 2, 3]);
return true;
}
// Check your other combinations...
// If no combination matches, thereis no winner
return false;
}
function changeWinnerColors(cells) {
for(var cell of cells)
changeColor(cell);
}
function changeColor(i) {
lettercolor[i] = (lettercolor[i] + 1) % color.length;
document.getElementById(`cell${i}`).style.color = color[lettercolor[i]];
}