【发布时间】:2016-01-03 06:28:08
【问题描述】:
我用 js 制作了一个井字游戏,我有几个数组。
-一个用于 html td 元素(网格)
- 看看他们之前是否被点击过 (boolGrid)
- 还有一个用颜色(colorgrid)检查结束条件
我使用 var 关键字及其内容在全局范围内定义了所有这些,现在游戏确实可以运行,但是当我在控制台中输入它们的名称时,它给了我 Uncaught ReferenceError: array is not defined。我想知道这是怎么回事,因为我接下来正在尝试制作 OXO 游戏。
这里是代码的链接,
井字游戏:https://jsfiddle.net/NeuroTypicalCure/0k73umd1/3/
我在 OXO 上的进展: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
【问题讨论】:
-
你需要知道控制台是如何工作的——在 jsfiddle 上使用控制台不是调试问题的方法
-
"这是一个强制性的代码段,但 js fiddle 更容易,至少对我来说。" — 尝试让您想回答问题的人更容易回答。把你的代码放在这里。
-
我为昆汀添加了代码 :)
-
Jaromanda X,你能告诉我控制台是如何工作的吗?我应该如何调试问题?
标签: javascript arrays html