2017-04-22 35 views
0

我正在连接四个游戏。 当一个人类玩家玩这个游戏时,我希望他能够点击他想要移动的列。如何暂停脚本,直到用户输入发生

我很努力地在合法的列上添加事件成。 以下代码将根据玩家点击的列从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

if语句,你检查你可以再补充是'humanMove = =事件监听后的-1并且取决于你决定接下来会发生什么 – Leguest

+0

我不需要while循环。你为什么不在你的clicklistener本身中做任何你打算做的事(可能调用一个具有特定参数的函数)? – jrook

+0

@Leguest你是指我在伪代码中写的东西吗?我可以把大括号放进什么? – Tweakimp

回答

0

虽然如果OP已经提供了一种用于“游戏” HTML和已定义的方法getLegalMoves()我宁愿,我修改的代码,使得一个特别重要的变化。请注意,我不确定为什么OP使用“let”在全局范围中定义变量时,如果它们不包含在代码块中,即用大括号定义。这就是说,这是一个有效的修改版本。关键的变化涉及到摆脱返回语句,因为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

相关问题