20-7 よみがえれ!古代の儀式②

解説動画

解答コード

player.onChat("20-7", function () {
    player.say("向かい合うヘビの、欠けたほうを補います");

    // ヘビを読み取ります
    let values: number[] = [];
    let turnRight: boolean = false; // 曲がる向き(最初は左)
    for (let step: number = 0; step < 9; step++) {
        // 向いている方向の前へ進む
        agent.move(FORWARD, 1);
        // 足元のブロックを読み取り配列に追加する
        let id: number = agent.inspect(AgentInspection.Block, DOWN);
        values.push(id);
        // 次に進む向きへ方向を変える
        if (step % 6 == 5) {
            turnRight = true; // これ以降は曲がる向きを右に切り替える
        }
        if (step > 0 && step % 2 == 1) {
            if (turnRight) {
                agent.turn(RIGHT);
            } else {
                agent.turn(LEFT);
            }
        }
    }

    // 読み取ったヘビと向かい合うヘビを置きます
    turnRight = false; // 曲がる向きを左に戻す
    agent.setSlot(1);
    for (let step: number = 0; step < 9; step++) {
        // 向いている方向の前へ進む
        agent.move(FORWARD, 1);
        // 配列の後ろから順番にブロック番号を取り出して足元に置く
        let id: number = values.pop();
        agent.setItem(id, 1, 1);
        agent.place(DOWN);
        // 次に進む向きへ方向を変える
        if (step % 6 == 5) {
            turnRight = true; // これ以降は曲がる向きを右に切り替える
        }
        if (step > 0 && step % 2 == 1) {
            if (turnRight) {
                agent.turn(RIGHT);
            } else {
                agent.turn(LEFT);
            }
        }
    }
    player.say("欠けたヘビを補いました");
});