我用 js 制作了一个 Tic Tac Toe 游戏,我有几个数组。
- 一个用于 html td 元素(网格)
- 用于查看它们之前是否被点击过 (boolGrid)
-还有一个用颜色检查结束条件(colorgrid)
我使用 var 关键字及其内容在全局范围内定义了所有这些,现在游戏确实可以运行,但是当我在控制台中输入它们的名称时,它会给出 Uncaught ReferenceError: array is not Defined。我想知道这是怎么回事,因为我下一步正在尝试制作 OXO 游戏。
这是代码的链接,
井字游戏:https://jsfiddle.net/NeuroTypicalCure/0k73umd1/3/ https://jsfiddle.net/NeuroTypicalCure/0k73umd1/3/
我在 OXO 上的进展:https://jsfiddle.net/NeuroTypicalCure/vdz5q97v/ https://jsfiddle.net/NeuroTypicalCure/vdz5q97v/(显然未完成)
var grid = [
document.getElementById("a").children[0],
document.getElementById("a").children[1],
document.getElementById("a").children[2],
document.getElementById("b").children[0],
document.getElementById("b").children[1],
document.getElementById("b").children[2],
document.getElementById("c").children[0],
document.getElementById("c").children[1],
document.getElementById("c").children[2],
];
var boolGrid = [
false,false,false,
false,false,false,
false,false,false
];
var colorGrid = [
"grey","grey","grey",
"grey","grey","grey",
"grey","grey","grey"
];
var resetButton = document.getElementById("rb");
var color = "green";
var clicks = 0;
function allTiles(color){
for(var i=0;i<grid.length;i++){
grid[i].style.backgroundColor = color;
boolGrid[i] = true;
}
}
function init(){
for(var i=0;i<grid.length;i++){
grid[i].style.backgroundColor = "grey";
boolGrid[i] = false;
colorGrid[i] = "grey";
}
}
function listen(arr,num){
arr[num].addEventListener("click",function(){
if(clicks == 0 || clicks%2 == 0){
color = "green";
}else{
color = "red";
}
if(boolGrid[num] === false){
arr[num].style.backgroundColor = color;
boolGrid[num] = true;
colorGrid[num] = color;
clicks++;
checkEnd("green");
checkEnd("red");
}
});
}
function addEventListeners(){
for(var i=0;i<grid.length;i++){
listen(grid,i);
}
}
function checkEnd(color){
// ----------------- horizontal --------------
if(colorGrid[0] === color && colorGrid[1] == color && colorGrid[2] === color){
console.log(color+"Wins!");
allTiles(color);
}
if(colorGrid[3] === color && colorGrid[4] == color && colorGrid[5] === color){
console.log(color+"Wins!");
allTiles(color);
}
if(colorGrid[6] === color && colorGrid[7] == color && colorGrid[8] === color){
console.log(color+"Wins!");
allTiles(color);
}
//------------ vertical --------------
if(colorGrid[0] === color && colorGrid[3] == color && colorGrid[6] === color){
console.log(color+"Wins!");
allTiles(color);
}
if(colorGrid[1] === color && colorGrid[4] == color && colorGrid[7] === color){
console.log(color+"Wins!");
allTiles(color);
}
if(colorGrid[2] === color && colorGrid[5] == color && colorGrid[8] === color){
console.log(color+"Wins!");
allTiles(color);
}
// ------------------ diagonal -------------------
if(colorGrid[0] === color && colorGrid[4] == color && colorGrid[8] === color){
console.log(color+"Wins!");
allTiles(color);
}
if(colorGrid[2] === color && colorGrid[4] == color && colorGrid[6] === color){
console.log(color+"Wins!");
allTiles(color);
}
}
init();
addEventListeners();
resetButton.addEventListener("click",function(){
init();
})
请随时给我留下任何提示或更正,提前谢谢:)
祝您的项目好运,
-T