Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 垄断:仅当玩家自然落地时才检查双人_Javascript_Jquery - Fatal编程技术网

Javascript 垄断:仅当玩家自然落地时才检查双人

Javascript 垄断:仅当玩家自然落地时才检查双人,javascript,jquery,Javascript,Jquery,在《垄断》中,当一名玩家落在“机会”牌或“公益金”牌上时,会抽出一张牌,指示玩家前进到不同的位置,在这种情况下,即使他掷了一个双骰,该玩家的回合也结束了。我正试图将这一特性融入到我的代码中 问题是我应该把checkDouble放在什么级别。我想检查双打,如果玩家是通过掷骰子降落在那里,而不是当玩家被一张牌移动时 当玩家点击buy时,checkDouble已经运行,changeTurn也运行了,因此错误的玩家被分配到购买的财产 我没有包括我所有的代码,这是455行代码。我希望我已经提供了足够的代码

在《垄断》中,当一名玩家落在“机会”牌或“公益金”牌上时,会抽出一张牌,指示玩家前进到不同的位置,在这种情况下,即使他掷了一个双骰,该玩家的回合也结束了。我正试图将这一特性融入到我的代码中

问题是我应该把checkDouble放在什么级别。我想检查双打,如果玩家是通过掷骰子降落在那里,而不是当玩家被一张牌移动时

当玩家点击buy时,checkDouble已经运行,changeTurn也运行了,因此错误的玩家被分配到购买的财产

我没有包括我所有的代码,这是455行代码。我希望我已经提供了足够的代码


如果掷骰子时你为掷骰子设置了一个标志,你可以在跟随pickcard移动时清除该标志。对于终端节点上的所有其他路径,检查rolledDoubles标志,如果设置了该标志,则调用一个新的“LetPlayerKnowtheyCanrollReach”,它调用rollDice


您的电子表格有助于可视化每个点的各种选择。我对垄断规则很生疏。

我的rollDice函数中已经有一个变量isDouble,它会生成两个随机骰子卷。checkDouble稍后使用该变量来确定是否更改Turn。当玩家被一张牌移动时,我将该变量设置为false。所以它将是CheckPurchable->pickCard->movement->CheckPurchable,但现在isDouble设置为false。->checkDouble由于isDouble为false,changeTurn将运行。changeTurn是否进行检查以确保所有用户输入都已完成,或者是否使用回调来防止调用changeTurn,直到用户用尽其选项?例如,showPurchaseCard是否使用回调函数?不,它不使用回调函数。changeTurn只是在1和0之间切换。我不知道回调是什么,我得读一下。ShowPurchaseCard也不使用回调函数。您调用“淡出”的地方已经使用回调函数。“slow”是淡出的一个参数,但函数{$.dect card.toggle;};是回调,因为它在淡出完成时执行。如果您要求向用户显示选择,您可以实现回调,以便在用户做出选择时继续使用代码。这将阻止他们在您切换用户后进行选择。哦,我不知道这叫回拨。我只是认为这只是一个额外的参数,当淡出完成时会调用它。这可能会解决问题,此时showPurchaseCard会提示玩家选择购买或拍卖,但代码不会等待玩家做出选择,而是在玩家做出选择时继续使用checkDouble,回合已经更改,错误的玩家被分配购买的属性。我将如何使用回调来解决该问题?
function gameEngine(){
    clearContent();
    rollDice();
    drawDice(dice1, dice2);
    processDice(); 
    updatePos();    
    movePiece();
    checkPurchasable();
    checkDouble();// this is a problem, because by the time the player clicks the buy button, checkDouble has run and hence changeTurn.
}

function checkPurchasable(){
    if (getPurchasable()) {
        checkForsale();
    } else {
        nonPurchasable();
    }
}

function checkForsale() {
    if (getOwner() == "unowned") {
        toggleButtons();
        if ($(".action-card").is(":visible")) {
        $(".action-card").delay(1000).fadeOut('slow', function() {
            $(".deed-card").toggle();   
        });
        } else {
        $(".deed-card").toggle();   
        }

        switch (true) {
        case (getType() == "city"):
                showDeedCard();
                break;
            case (getType() == "airport"):
                showAirportCard();
                break;
            case (getType() == "utility"):
                showUtilityCard();
                break;
        }   
    } else {
        payRent();
    }
}

function nonPurchasable() {
    switch(true) {
        case (getType() == "chest"):
            drawCard(player, chest, "Community Chest");
            break;
        case (getType() == "tax"):
            updateBalance(getTax()*-1,player);
            break;
        case (getType() == "chance"):
            drawCard(player, chance, "Chance");
            break;
        case (getType() == "corner"):
            break;
    }
}

function Buy() {
    $(".deed-card").slideToggle();
    toggleButtons();
    assignOwner();
    updateBalance(getPrice()*-1,player);
    var x = getTitle();
    var xx = x.substring(0,3);
    var res = xx.toUpperCase();
    if (getType() != "city") {
        $("#assets"+player).append('<span class="black">' + res + '</span>');
    } else {
        showPrice();
        var set = positions[pos].set;
        $("#assets"+player).append('<span class="' + set + '">' + res + '</span>');
    }
}

function drawCard(player, deck, title) {
    var card = deck.shift();
    flipCard(card.instruction, title);
    card.act(player);
    deck.push(card);
}

function assignOwner() {
    positions[pos].owner = player;
}

function changeTurn() {
    player = 1 - player;
}

function checkDouble() {
    if (isDouble) {
        dblRolls++;
    } else {
        dblRolls = 0;
        changeTurn();
    }
}

function AbsMoveCard(instruction, destination) {
    this.instruction = instruction;
    this.destination = destination;
}

AbsMoveCard.prototype.act = function(player) {
    pos = this.destination;
    if (pos == 0 || pos<players[player].pos) {
        updateBalance(200, player);
    }
    isDouble = false;
    updatePos();
    movePiece();
    checkPurchasable();
};

function RelMoveCard(instruction, distance) {
    this.instruction = instruction;
    this.distance = distance;
}

RelMoveCard.prototype.act = function(player) {
    alert("Moving relative.");
    pos -= this.distance;
    isDouble = false;
    updatePos();
    movePiece();
    checkPurchasable();
};