解説動画
解答コード
// 壁を複製する
let arr13_7 = [[0]];
function cloneWall() {
// 外側の配列をループする
arr13_7.forEach(function (element) {
// 配列の中の配列をループする
element.forEach(function (block) {
// 格納されたブロックを設置
agent.setItem(block, 1, 1);
agent.place(FORWARD);
agent.move(UP, 1);
});
// 格納されたelement要素の数だけ移動する arr = [[赤,緑,黄]],[[赤,赤,黄]],[[黄,緑,緑]],[[赤,黄,緑]]
agent.move(DOWN, element.length);
agent.move(RIGHT, 1);
});
}
// 壁を読み取る
function inspectWall() {
arr13_7 = [];
// 横方向に4ブロックあるので4回繰り返す
for(let i = 0; i < 4; i++) {
let arrline = [];
// 縦方向に3ブロックあるので3回繰り返す
for(let j = 0; j < 3; j++) {
// 目の前のブロックを読み取る
let block_type = agent.inspect(AgentInspection.Block, FORWARD);
// 配列の中の配列に格納する
arrline.push(block_type);
agent.move(UP, 1);
}
// 配列の中の配列に格納し終わったものを外側の配列に格納する
arr13_7.push(arrline);
// 次に読み取る場所に移動
agent.move(DOWN, 3);
agent.move(RIGHT, 1);
}
}
player.onChat("13-7", function () {
// 読み取る
inspectWall();
// 複製位置に移動
agent.turn(LEFT_TURN);
agent.turn(LEFT_TURN);
agent.move(RIGHT, 7);
agent.move(FORWARD, 7);
// 壁を複製
cloneWall();
});