owned this note
owned this note
Published
Linked with GitHub
###### tags: `minecraft`
<style>
* {font-family: 'Terminal','ヒラギノ丸ゴ ProN','Hiragino Maru Gothic ProN',YuGothic,'Yu Gothic','Hiragino Kaku Gothic ProN','ヒラギノ角ゴ ProN W3','Verdana','Arial',sans-serif;}
.markdown-body {font-family: 'Terminal','ヒラギノ丸ゴ ProN','Hiragino Maru Gothic ProN',YuGothic,'Yu Gothic','Hiragino Kaku Gothic ProN','ヒラギノ角ゴ ProN W3','Verdana','Arial',sans-serif;}
h2 {padding-top: 50px;}
img {margin: 20px auto;}
.alert-success {margin-top: 50px;}
.alert h2 {padding-top: 0px;}
.part {letter-spacing: .1rem;}
.markdown-body h3 {margin-top: 12px;margin-bottom: 12px;}
.markdown-body p {font-size: 1.25em;margin-top: 12px; margin-bottom: 16px;}
.markdown-body li {font-size: 1.25em;}
.markdown-body pre {font-size: 20px;}
.focus {color: red;font-weight: bold;}
.link-box {display: flex;justify-content: space-between; margin-top: 50px;margin-bottom: 50px;}
a.link {display: block; width: 50%; padding: 10px 15px; text-align: center; color: #fff; font-weight: bold; font-size: 20px; letter-spacing: .1em; text-decoration: none;}
a.link:hover {opacity: 0.85;}
a.prev {background: linear-gradient(to bottom, #1A7BBD 0%, #1A7BBD 50%, #125684 51%, #125684 100%); border-radius: 10px 0 0 10px;}
a.next {background: linear-gradient(to bottom, #D76820 0%, #D76820 50%, #964816 51%, #964816 100%); border-radius: 0 10px 10px 0;}
</style>
> [name=wataru yamamoto]
# 【第42回】 レッドストーン回路でプログラムを動かそう
:::success
## ◆ 今回の目標
- ### レッドストーン入力を調べよう!
- ### レッドストーンでプログラムを動かそう!
:::
## ◆ これまで作ったタートル
これまでの資料の中で、攻撃するタートルや農業タートルなどいろいろなタートルを作ったね

でも、プログラムを実行するためには、毎回対話画面でプログラム名を入力しないといけないからちょっとめんどうだよね…
今回はレッドストーンを使ってプログラムを動かせるようにしよう!
## ◆ レッドストーンの入力と出力
前回(第41回)の資料ではタートルからレッドストーン回路のONとOFFを操作する<span class="focus">「レッドストーン出力」</span>を学んだね
今回はタートルにつながっているレッドストーン回路がONかOFFかを調べる<span class="focus">「レッドストーン入力」</span>を学ぶよ

## ◆ レッドストーンの入力を調べる
タートルにつながっているレッドストーン回路がONかOFFかを調べる命令は、<span class="focus">rs.getInput( 方向 )</span>だよ
```lua=
redstone = rs.getInput("back")
```
上のように書くと、後ろ("back")につながっているレッドストーン回路を調べて、ONだったら「true」、OFFだったら「false」が変数に入るよ
rs.getInput( 方向 )命令の方向は、前回と同じでこのように決めるよ

:::success
## ◆ 課題1:レッドストーン入力を調べてみよう
:::
このようにタートルとレバーをレッドストーンでつないで、プログラムでレッドストーン入力を調べて表示してみよう

レバーのONとOFFを切り替えると、trueとfalseが切り替わるのを確認しよう!
## ◆ レッドストーンを使ってタートルに攻撃をさせる
次はレッドストーンを使ってタートルに自由に攻撃をさせてみよう
いつも使っている「タートル実験室v3」のワールドに、スポーンブロックから出てきた敵を攻撃するタートルがあるよね
次はこのタートルを使うよ!

:::success
## ◆ 課題2:準備をしよう
:::
剣を持ったタートルと何かのブロックをレッドストーンでつなぎ、ブロックにボタンを取り付けよう

ボタンを持ってブロックに右クリックすると取り付けられるよ!
:::success
## ◆ 課題3:レッドストーンを使ってタートルに攻撃させてみよう
:::
ボタンを押したらレッドストーン回路でつながったタートルが攻撃するプログラムを書いて実行してみよう

:::info
## ヒント
while文を使って無限ループをさせるよ
ループするたびにレッドストーン入力を調べて(上の図では後ろから)、レッドストーン回路がONのときだけ攻撃する命令をかこう
無限ループをそのまま行うと処理が速すぎるから、前回ならった<span class="focus">sleep( 秒数 )命令</span>を使ってループごとに1秒ぐらい待つようにしよう
:::
## ◆ レッドストーンを使って農業をさせる
次はレッドストーンを使ってタートルに農業をさせてみよう
いつも使っている「タートル実験室v3」のワールドに、農業をするタートルがあるよね
次はこのタートルを使うよ!

:::success
## ◆ 課題4:準備をしよう
:::
クワを持ったタートルと何かのブロックをレッドストーンでつなぎ、ブロックにボタンを取り付けよう

## ◆ ボタンを押したら、畑を耕すプログラムが動くようにしよう
ボタンを押して、タートルにつながっているレッドストーン回路がONになったら畑を耕すようにしよう
畑を耕すプログラムを新しく書かなくても、これまでに作ったプログラムを実行させることができるよ
## ◆ 別のプログラムを実行させる命令
プログラムの中に、<span class="focus">shell.run(" プログラム名 ")命令</span>を書くと、そのタートルが持っている別のプログラムを実行させることができるよ
```lua=
shell.run("tagayasu")
```
:::success
## ◆ 課題5:レッドストーンを使って畑を耕そう
:::
ボタンを押したら、レッドストーン回路でつながったタートルが畑を耕すプログラムを実行するようにしよう

## タートルとレッドストーン回路
前回と今回でレッドストーン回路を使ってみたね
タートルのプログラミングとレッドストーン回路をうまく組み合わせるともっともっといろんな事ができたり、便利に使えたりするよ!
ぜひみんなも自分で考えてやってみよう!