解説動画
解答コード
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("欠けたヘビを補いました");
});