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=shinya kunisada]
# 【第17回】 アイテムを識別してみよう!
:::success
## 【今回の目標】
- ### Table(テーブル)型を使ってみよう!
- ### アイテムを識別してみよう!
:::
## ◆ ちょっと変わった変数
### 今回はちょっと変わった<span class="focus">Table(テーブル)型</span>という変数を使ってみるよ!

## ◆ 変数の中にいくつかの変数
### いくつかの変数を入れることができる変数をイメージしよう!

## ◆ Table型
### さっきの図をプログラムに書くとこんな感じ
### この変数tblが<span class="focus">Table(テーブル)型</span>といわれるものだよ

## ◆Table型の作り方

### 変数を作るときとほとんど一緒で、違うのは右側だね
### 値の部分には<span class="focus">数、文字、TrueとFalse(真偽値)、変数、テーブル</span>を入れることができるよ
### また,値は「<span class="focus"> , </span>」で区切ればいくらでもTableに入れることができるよ!
## ◆ Table型の中身を読む
### Table型の中身を読むときは、<span class="focus">変数名</span>[<span class="focus">番号</span>]で読むことができるよ

## ◆ Table型の中身を書きかえる
### 読むときと同じように <span class="focus">変数名</span>[<span class="focus">番号</span>] = <span class="focus">値</span>で中身の値を書きかえることができるよ

:::success
## 【課題1】Table型を使ってみよう!
:::
### 下のコードをそのまま書いて実行してみよう!
### プログラムが何をしているか確認してみよう!

## ◆ for文のループカウンター
### ループカウンタをうまく使えば、テーブルの中身をすべて取り出して使うことができる!

:::success
## 【課題2】for文を使って表示してみよう!
:::
## 「<span class="focus">h</span>」、「<span class="focus">e</span>」、「<span class="focus">l</span>」、「<span class="focus">l</span>」、「<span class="focus">o</span>」の文字をTable型に入れて、for文を使って全て表示してみよう!

## ◆ 値に名前をつける
### Table型では<span class="focus">値</span>に、1番目、2番目のような番号ではなく、「<span class="focus">Tech</span>」のような<span class="focus">名前</span>をつけることができるんだ!

## ◆ 名前のついた値の読み書き
### 名前のついた値は番号のかわりにその名前を使って<span class="focus">変数</span>["<span class="focus">名前</span>"]と書けば読み書きできるよ!

:::success
## 【課題3】りんごとみかん
:::
### <span class="focus">ringo</span>と入力すればりんごの値段、<span class="focus">mikan</span>と入力すればみかんの値段を表示しよう!ただし、<span class="focus">if文は使わないこと!</span>

## ◆ どんなときにTable型を使う?
### 自分のプロフィールなどを、Table型を使ってあらわすことが多い

## ◆ ブロックを識別(しきべつ)しよう!
### 今回やることは、「<span class="focus">目の前にあるのは土ブロックかどうか</span>」のように<span class="focus">アイテムを識別すること</span>

## ◆ ブロックを識別する命令
<span class="focus">turtle.inspect()命令</span>を使うことで、目の前のブロックを識別することができる

## ◆ 2つの変数
### <span class="focus">turtle.inspect()</span>は特別な命令で、命令を実行するときに2つの変数が必要になる
### 2つの変数には下の2つが入る
- ### 前の変数
- ### <span class="focus">ブロックがあるかどうかの判定</span>
- ### 後ろの変数
- ### <span class="focus">ブロックの情報が入ったTable型のデータ</span>
## ◆ Table型の変数の中身
### 後ろの変数は下のようなTable型になっていて、<span class="focus">["name"]</span>でそのブロックがなにかを調べられる
```lua=
blk, data = turtle.inspect() とすると、dataの中には下のような情報がTable型で保存されている
-- dataの中身 --
{
state { <-- ブロックの状態
variant = "dirt", <-- 同じブロックでのわずかな違いを表す
snowy = false, <-- 雪が積もっているか
},
name = "minecraft:dirt", <-- ブロックの名前
metadata = 0, <-- メタデータ
}
-- metadataを取り出したいときは次のように指定する
data["metadata"]
```
:::success
## 【課題4】ブロックの名前を表示しよう!
:::
### <span class="focus">turtle.inspect()命令</span>を使って、目の前のブロックの名前を表示しよう!
## ◆ テーブル型の中にさらにテーブル型を入れる
### テーブル型の中にテーブル型を入れることもできる
### 例えば下の<span class="focus">state</span>など
```lua=
{
state { <-- ブロックの状態
variant = "dirt", <-- 同じブロックでのわずかな違いを表す
snowy = false, <-- 雪が積もっているか
},
name = "minecraft:dirt", <-- ブロックの名前
metadata = 0, <-- メタデータ
}
```
:::success
## 【課題5】ブロックの状態を表示しよう!
:::
### <span class="focus">turtle.inspect()命令</span>を使って、目の前のブロックの状態の<span class="focus">variant</span>がどんな値か表示してみよう!

:::success
## 【課題6】もっと調べよう!
:::
### 課題5ができたら、<span class="focus">粗い土</span>をクラフトして、課題4と課題5のプログラムで調べてみよう!どうなるかな?

<div class="link-box">
<a href="https://hackmd.io/eVSdho_-QXa1OlPumsUrBQ" class="link prev">前に戻る</a>
<a href="https://hackmd.io/PhUJPlloSLuJCLGv8h2zBQ" class="link next">次に進む</a>
</div>