タートルについての基本知識
タートルは、言わばプログラム可能な自立型ロボットです。
プログラムすれば、移動できないただのコンピュータ以上に様々なことができるようになります。
その1:コンピュータとタートルの違い
- コンピュータの機能に加えて次のような機能を持つ
- 固い。稼働中に溶岩に触れても全然平気。でも爆発には弱いみたい。
- 16スロットのアイテム所持用インベントリを持つ
- 燃料を補給すると前後左右上下に自由に移動できる
- 左右両側に一か所ずつオプションをつけるスペースがあり、特定のツールを後から加え新しい機能を与えることができる
- 例えば、農業タートルは片方がダイヤ鍬で埋まっている。もう片方にワイヤレスモデムをつけることで無線通信もできるようになる
- ブロックを設置(turtle.place())するなど、インベントリ内のアイテムを使ってさまざまな行動ができる
その2:タートルプログラミングのTIPS
- 基本的にTurtleAPIを利用する
- turtle.forward()、turtle.dig() など。日本語でAPIを説明してくれるCC非公式Wikiはバイブルなのでブックマーク必須。
- インベントリの取り扱い
- 4x4の16スロットあり左上から横に順に1~16まで番号が割り振られている
- いまどこのスロットを見ているかという選択スロットの概念があり、turtle.select(番号)のように指定する。
- turtle.place()などのメソッドは、選択スロットのアイテムを設置する
- ワイヤレスモデムなどの周辺機器の利用は、プログラム中でタートルのどちら側に隣接しているか指示する必要あり
- pheriheral.warp("right")など、あとはそれぞれの周辺機器に用意されたメソッドを利用のこと
- よくある勘違い
- 周辺機器の方向は「タートルから見てどちらにあるかを考える」: right, left, forward, back, top, bottom
- タートルの移動は、forward(), back(), up(), down() のみ。右側に行きたかったら、turnRight() してから forward()
- ずっと動き続けるプログラムを作るときは while true do ~ end ループ文を使うことが多い
- 止めるための例外処理(アイテムが尽きたらループ抜けて終了など)をプログラムに入れておかなければCTRL+Tで止めるしかない
while文には必ず sleep(秒数) メソッドを入れること。これを入れなければCTRL+Tで止めることができないし、そもそもエラーで実行できない。
- タートルができないこと
- 目の前のオブジェクトやスロット内のアイテムが何かを判断することはできない。ただしインベントリ内の他アイテムと比較して間接的に判断することはできる
- スロット1のアイテムは、ItemID:XXXの金鉱石だ! ←無理
- スロット1のアイテムは、スロット15のアイテム(あらかじめ入れておいた金鉱石)と同じものだ! ←可能
- 目の前のオブジェクトやスロット内のアイテムが何かを判断することはできない。ただしインベントリ内の他アイテムと比較して間接的に判断することはできる