サイズ: 5007
コメント:
|
← 2011-05-19 07:54:00時点のリビジョン28 ⇥
サイズ: 4638
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
#acl All: == 属性と条件 == オブジェクトがある範囲内にあることを、どうやって判定したら良いでしょうか? . {{attachment:jouken01.png}} これまでは'''重なっているか'''という判定をつかってきました。 . {{attachment:jouken09.png}} この方法では、2つのオブジェクトがちょっとでも触れていれば'''はい'''となりました。 . {{attachment:jouken02.png}} {{attachment:jouken03.png}} {{attachment:jouken04.png}} |
## page was renamed from etoys属性と条件 == 属性を条件に利用する == これまでは'''重なっているか'''という判定を主につかってきました。 属性の値を使うと細かな条件判定を行うことができます。 属性もたくさんありますが、座標を使った条件について説明します。 数値で表されている他の属性も 同様の考え方で条件に使えるはずです。 例えば、 幾何のカテゴリには次のような属性があります。 . {{attachment:jouken19.png}} |
行 20: | 行 27: |
. いぬのx座標が200より小さいとき'''はい'''の右の命令(記入されていません)が行われ、 . それ以外のとき'''いいえ'''の右の命令(記入されていません)が行われます。 |
. いぬのx座標が200より小さいとき条件が成り立ちます。 . '''はい'''の右に命令を記入すれば、条件が成り立つとき実行されます。 . '''いいえ'''の右に命令を記入すれば、条件が成り立たないとき実行されます。 |
行 29: | 行 37: |
図の範囲内の条件を考えます。 . x座標が200より小さい . y座標が300より小さい |
ある範囲内にあるという条件の書き方。 ==== 例2 ==== . '''x座標が200より小さい''' . '''y座標が300より小さい''' |
行 35: | 行 44: |
. 1つ目のテストに「x座標が200より小さい」という条件を書き、 | . 1つ目のテストに'''x座標が200より小さい'''という条件を書き、 |
行 37: | 行 46: |
. 1つ目のテストに「y座標が300より小さい」という条件を書きます。 | . 1つ目のテストに'''y座標が300より小さい'''という条件を書きます。 |
行 42: | 行 51: |
==== 例3 ==== x座標が400から500の間にある、の場合も2つのテストを使って表します。 . '''x座標が400より大きい''' . '''x座標が500より小さい''' |
|
行 43: | 行 56: |
=== 差による判定 === 犬と青い丸の横方向の位置(X座標)が近いという条件を考えます。 |
=== 例4 === 犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。 |
行 46: | 行 59: |
. {{attachment:jouken05.png}} . {{attachment:jouken06.png}} |
|
行 51: | 行 62: |
. いぬのx座標 - 青い丸のx座標 < 20 . いぬのx座標 - 青い丸のx座標 > -20 |
. '''いぬのx座標 - 青い丸のx座標 < 20''' . '''いぬのx座標 - 青い丸のx座標 > -20''' |
行 55: | 行 66: |
. 絶対値 | | を使うと1つの式に書けます。 . |いぬのx座標 - 青い丸のx座標| < 20 . 絶対値をとる関数は abs( ) です。 . abs(いぬのx座標 - 青い丸のx座標) < 20 |
. 絶対値 '''| |''' を使うと1つの式に書けます。 . '''|いぬのx座標 - 青い丸のx座標| < 20''' . 絶対値をとる関数は '''abs( )''' です。 . '''abs(いぬのx座標 - 青い丸のx座標) < 20''' |
行 60: | 行 71: |
次のような手順で配置できます。 . テストタイルを配置します。 . スクリプトの道具箱から abs() を取り出し配置します。 . {{attachment:jouken18.png}} . abs( )の中にある右向きの△をクリックします。 . {{attachment:jouken12.png}} . 2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。 |
次のような形の式を作り、赤で示した2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。 |
行 68: | 行 73: |
. 演算と数値を修正します。 | このようになります。演算と数値を修正します。 |
行 72: | 行 77: |
およそ図のような位置関係にあることを判定する場合。 . {{attachment:jouken08.png}} . 目的の配置にしてみて、ビューアで座標を調べ差を手計算します。 . いぬのx座標 - 青い丸のx座標 = 280 . いぬのy座標 - 青い丸のy座標 = 50 . 右辺の数を移項し、右辺を0にします。 . いぬのx座標 - 青い丸のx座標 - 280 = 0 . 左辺を絶対値(abs関数)で囲みます。 . abs(いぬのx座標 - 青い丸のx座標 - 280) = 0 . 等号を不等号に変え、右辺の0を誤差に変えます。 . abs(いぬのx座標 - 青い丸のx座標 - 280) < 15 . これで誤差15以内のX方向の条件ができました。 . 同様にY方向の条件も書けます。 . スクリプトでは2つのテストタイルを使うことになります。 |
そのオブジェクトの位置を判定するには . x座標 . y座標 と数値を比較する。 2つのオブジェクトの位置関係をみるには、2つのオブジェクトの . x座標とx座標 . y座標とy座標 を比較する。 2つのオブジェクトの距離をみるには、 観察カテゴリにある . タートルへの距離 を使う。 |
属性を条件に利用する
これまでは重なっているかという判定を主につかってきました。
属性の値を使うと細かな条件判定を行うことができます。
属性もたくさんありますが、座標を使った条件について説明します。
数値で表されている他の属性も 同様の考え方で条件に使えるはずです。
例えば、 幾何のカテゴリには次のような属性があります。
座標を使う
位置は座標で表されているので、座標の値を使って判定ができます。
- ビューアでx座標の項目を表示し、項目名のところをつかんで引き出すとこのようになります。
- 属性値を設定するときは、矢印のところをつかんで引き出しましたが、今回はつかむところが異なります。
- このタイルは条件(テスト)の場所や、計算式の一部分に配置することができます。
例1
- x座標のタイルをテストの場所に配置し、数値を修正しました。
- いぬのx座標が200より小さいとき条件が成り立ちます。
はいの右に命令を記入すれば、条件が成り立つとき実行されます。
いいえの右に命令を記入すれば、条件が成り立たないとき実行されます。
- Etoysの座標はこのようになっています。
- いぬが色の付いた範囲内にあるとき、例1の条件が成り立ちます。
複数の条件
ある範囲内にあるという条件の書き方。
例2
x座標が200より小さい
y座標が300より小さい
- の2つの条件が成り立つ場合に対応します。
- テストタイルを2つ組み合わせて使います。
1つ目のテストにx座標が200より小さいという条件を書き、
1つ目のテストタイルのはいのところに2つ目のテストタイルを配置します。
1つ目のテストにy座標が300より小さいという条件を書きます。
1つ目のテストが成り立つとき、対応するはいの部分が実行されます。
- ここにもテストがあるので、さらに条件判定が行われ
- 2つ目のテストも成り立つとき、赤で示した部分に書かれた処理が行われます。
例3
x座標が400から500の間にある、の場合も2つのテストを使って表します。
x座標が400より大きい
x座標が500より小さい
例4
犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。
- 犬にも丸にも大きさがありますが、中心座標で判定するものとします。
- 上下位置(Y座標)は条件に含まないことにします。(上下どこでもよい)
- X座標の差が20より小さいとすると条件は
いぬのx座標 - 青い丸のx座標 < 20
いぬのx座標 - 青い丸のx座標 > -20
- の2つになります。
上の例のように2つのテストタイルを使ってもできますが、関数を使って1つの条件で書くことができます。
絶対値 | | を使うと1つの式に書けます。
|いぬのx座標 - 青い丸のx座標| < 20
絶対値をとる関数は abs( ) です。
abs(いぬのx座標 - 青い丸のx座標) < 20
- という式を作ります。
次のような形の式を作り、赤で示した2つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。
このようになります。演算と数値を修正します。
条件の考え方
そのオブジェクトの位置を判定するには
- x座標
- y座標
と数値を比較する。
2つのオブジェクトの位置関係をみるには、2つのオブジェクトの
- x座標とx座標
- y座標とy座標
を比較する。
2つのオブジェクトの距離をみるには、 観察カテゴリにある
- タートルへの距離
を使う。