16-10 忍びよる悪い予感

解説動画

解答コード

let structure = [[[0]]];
// 読み取る
function inspectStructure() {
    structure = [];
    for (let i = 0; i < 4; i++) {
        let wall = [];
        for (let j = 0; j < 7 - i * 2; j++) {
            let line = [];
            for (let k = 0; k < 7 - i * 2; k++){
                let block_type = agent.inspect(AgentInspection.Block, FORWARD);
                line.push(block_type);
                agent.move(LEFT, 1);
            }
            wall.push(line);
            agent.move(RIGHT, 7 - i * 2);
            agent.move(UP, 1);
        }
        
        structure.push(wall);
        agent.move(FORWARD, 2);
        agent.move(DOWN, 7 - i * 2);
    }
}

// 複製
function cloneStructure() {
    structure.forEach(function (wall) {
        wall.forEach(function (line) {
            line.forEach(function (block){
                agent.setItem(block, 1, 1);
                agent.place(DOWN);
                agent.move(LEFT, 1);
            });
            agent.move(RIGHT, line.length);
            player.say(line.length);
            agent.move(BACK, 1);
        });
        agent.move(FORWARD, wall.length);
        agent.move(BACK, 1);
        agent.move(LEFT, 1);
        agent.move(UP, 1);
    });
}

player.onChat("16-10", function () {
    // 読み取る
    inspectStructure();

    // 複製先へ移動
    agent.move(LEFT, 9);
    agent.move(UP, 1);
    agent.move(BACK, 1);
    // 複製
    cloneStructure();
});