我正在进行连接四场比赛。 当一个人类玩家玩游戏时,我希望他能够点击他想要移动的列。
我正在加入一些合法的列,以便进入。
以下代码将根据玩家点击的列返回legalMoves
中的项目。只要没有点击合法列,代码就会暂停并等待。
现在,似乎忽略了addEventListeners
的行,代码只是继续运行而不等人类输入。
// array of legal moves, eg.[0,1,3,5,6]
let legalMoves = game.getLegalMoves();
// initialization with -1 to check if it changes
let humanMove = -1;
//column nodes
let node = document.getElementsByClassName("column");
// my try of getting at least the first column to work
node[0].addEventListener("click", function () {
humanMove = 0;
});
/* pseudo code:
while(humanmove===-1){
wait here until one event listener fires
}*/
// returns -1 every time :'(
return humanMove;
答案 0 :(得分:0)
虽然如果OP提供了“游戏”的HTML并定义了方法getLegalMoves(),我会更喜欢,但我修改了代码,做了一个特别重要的改变。注意,我不确定为什么当OP不包含在代码块中时,OP使用“let”来定义全局范围中的变量,即用大括号定义。也就是说,这是一个有效的修改版本。关键变化包括摆脱return语句,因为JavaScript只允许从函数或方法返回值。
HTML:
<div id="game">
<div class="column">
<button>Test</button>
</div>
</div>
CSS:
.column {
color:blue;
}
JS:
// array of legal moves, eg.[0,1,3,5,6]
//let legalMoves = game.getLegalMoves();
// initialization with -1 to check if it changes
let humanMove = -1;
//column nodes
var node = document.getElementsByClassName("column");
node[0].addEventListener("click", function() {
humanMove = 0;
console.log(humanMove);
});
工作示例here