1

我试图实现一个简单的 blckjack 游戏,问题是 timeOut 函数没有像我预期的那样工作。我写了一些调试信息来帮助你理解我的意思。用两个词我看到的是该函数被调用一次,然后由于某种原因它从函数中退出,程序继续执行自身,然后返回到 timeOut 函数......我想要的是暂停程序执行以等待用户选择是否停止申请新卡。先感谢您!

4

2 回答 2

0

waitForUserInput() 方法在哪里被调用?另外,为什么要使用超时来获取用户输入?为什么不简单地订阅鼠标点击事件呢?

于 2012-09-21T12:25:28.820 回答
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
        }

    };

我想要的是暂停程序执行以等待用户选择是否请求新卡ot停止

您应该放置一些指定了 onclick 处理程序的按钮。只需根据单击的按钮运行您需要的代码。现在我看不到用户如何对你的程序说他的选择。如果这是一个键盘命令(“s”按下而不是停止,“n” - 下一张卡片) - 你可以尝试使用document.onkeyup.

于 2012-09-21T12:27:26.697 回答