我试图实现simple blckjack game,问题是timeOut函数没有按预期工作。我写了一些调试信息来帮助你理解我的意思。用两个词我看到的是函数被调用一次,并且由于某种原因它从函数中退出,程序继续执行自己而不是retunrs到timeOut函数... 我想要的是暂停程序执行以等待用户选择是否请求新卡停止。 提前谢谢!
答案 0 :(得分:0)
调用waitForUserInput()方法在哪里?另外,为什么要使用超时来获取用户输入?为什么不简单地订阅鼠标点击事件?
答案 1 :(得分:0)
setTimeout
不会停止执行脚本。这只是为了延迟执行。在你调用它之后 - 程序的执行将照常继续,但是在指定的时间之后 - 作为第一个参数传递的函数将被执行。要等待用户输入 - 请查看click / keyup / keydown等事件。
你不应该在JS中做类似下面的事情。 JS总是单线程,这样的循环只会冻结你的界面。在你的情况下,看起来你应该将onclick
事件放在卡块上并放置一个代码来完成你需要的操作。
while(true){
waitForUserInput();
if(requestCard){
userHand.hitMe();
var userHandCards = userHand.printHand().split(",");
displayCard(userHandCards[cardIndex]);
cardIndex++;
//console.log(">"+userHand.score());
if(userHand.score()>21){
break;
}
}else{
break
}
};
我想要的是暂停程序执行以等待用户选择是否请求新卡停止
您应该使用指定的onclick处理程序放置一些按钮。并根据点击的按钮运行您需要的代码。现在我不知道用户如何对你的选择说出他的选择。如果这是一个keybord命令(“s”按下而不是停止,“n” - 下一张卡) - 你可以尝试使用document.onkeyup
。