19-9 見えない罠(わな)をこえて④

解説動画

クエスト19の19-6から19-10で必要なブロック番号

解答コード

function safeMoveForward() {
    let aheadId: number = agent.inspect(AgentInspection.Block, FORWARD);
    if (aheadId != AIR_ID) {
        throw "正面が崩れていて進めません";
    }
    agent.move(FORWARD, 1);
}

function safePlaceTorch() {
    agent.move(UP, 1);
    let rightId: number = agent.inspect(AgentInspection.Block, RIGHT);
    agent.move(DOWN, 1);
    if (rightId == AIR_ID) {
        throw "右側にたいまつを置けません";
    }
    placeTorch();
}

player.onChat("19-9", function () {
    player.say("トンネルを掘り進めます");
    agent.setSlot(1); // このあとはスロット1に常に1個だけたいまつを補充しながら使う(digForwardは設置を行わないため対象外)
    // 前置きの移動フェーズ: スタート地点は掘りかけの区間(1歩分・右にたいまつ設置済み)の手前にあるため、まずそこへ進む
    agent.move(FORWARD, 1);
    let reachedGoal: boolean = false;
    while (!reachedGoal) {
        digForward();
        try {
            safeMoveForward();
        } catch (e) {
            player.say("例外を検出: " + e);
            player.say("右へよけてから掘り進めます");
            agent.turn(RIGHT);
            digForward();
            agent.move(FORWARD, 1);
            agent.turn(LEFT);
        }
        let belowId: number = agent.inspect(AgentInspection.Block, DOWN);
        if (belowId == COAL_ID) {
            reachedGoal = true;
        } else {
            try {
                safePlaceTorch();
            } catch (e) {
                player.say("例外を検出: " + e);
                player.say("ここにはたいまつを置きません");
            }
        }
    }
    player.say("トンネルが掘れました");
});