<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>etoys属性を条件に利用する</title><revhistory><revision><revnumber>28</revnumber><date>2011-05-19 07:54:00</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>27</revnumber><date>2011-05-19 07:44:12</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>26</revnumber><date>2011-05-19 07:40:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>25</revnumber><date>2011-05-19 07:38:38</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>24</revnumber><date>2011-05-19 07:32:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>23</revnumber><date>2011-05-19 07:30:14</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>22</revnumber><date>2011-05-19 07:27:23</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>21</revnumber><date>2011-05-19 07:26:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>20</revnumber><date>2011-05-14 00:33:24</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>19</revnumber><date>2011-05-14 00:33:08</date><authorinitials>masahiko</authorinitials><revremark>名前を'etoys属性と条件'から変更。</revremark></revision><revision><revnumber>18</revnumber><date>2010-06-04 00:42:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>17</revnumber><date>2010-06-04 00:41:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2010-06-03 13:22:40</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2010-06-03 13:15:49</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2010-06-03 12:58:54</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2010-06-03 12:45:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2010-06-03 12:27:48</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2010-06-03 12:17:33</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2010-06-03 12:16:00</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2010-06-03 12:15:29</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2010-06-03 11:57:47</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2010-06-03 11:55:48</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2010-06-03 08:13:55</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2010-06-03 08:09:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2010-06-03 08:05:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2010-06-03 08:01:56</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2010-06-03 07:57:29</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2010-06-02 00:37:46</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>属性を条件に利用する</title><para>これまでは<emphasis role="strong">重なっているか</emphasis>という判定を主につかってきました。 </para><para>属性の値を使うと細かな条件判定を行うことができます。 </para><para>属性もたくさんありますが、座標を使った条件について説明します。 </para><para>数値で表されている他の属性も 同様の考え方で条件に使えるはずです。 </para><para>例えば、 幾何のカテゴリには次のような属性があります。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken19.png"/></imageobject><textobject><phrase>jouken19.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>座標を使う</title><para>位置は座標で表されているので、座標の値を使って判定ができます。 </para><itemizedlist><listitem override="none"><para>ビューアでx座標の項目を表示し、項目名のところをつかんで引き出すとこのようになります。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken10.png"/></imageobject><textobject><phrase>jouken10.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>属性値を設定するときは、矢印のところをつかんで引き出しましたが、今回はつかむところが異なります。 </para></listitem><listitem override="none"><para>このタイルは条件(テスト)の場所や、計算式の一部分に配置することができます。 </para></listitem></itemizedlist><section><title>例１</title><itemizedlist><listitem override="none"><para>x座標のタイルをテストの場所に配置し、数値を修正しました。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken11.png"/></imageobject><textobject><phrase>jouken11.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>いぬのx座標が200より小さいとき条件が成り立ちます。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">はい</emphasis>の右に命令を記入すれば、条件が成り立つとき実行されます。 </para></listitem><listitem override="none"><para><emphasis role="strong">いいえ</emphasis>の右に命令を記入すれば、条件が成り立たないとき実行されます。 </para></listitem></itemizedlist></listitem><listitem override="none"/><listitem override="none"><para>Etoysの座標はこのようになっています。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=zahyo02.png"/></imageobject><textobject><phrase>zahyo02.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></listitem><listitem override="none"><para>いぬが色の付いた範囲内にあるとき、例１の条件が成り立ちます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken15.png"/></imageobject><textobject><phrase>jouken15.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>複数の条件</title><para>ある範囲内にあるという条件の書き方。 </para><section><title>例２</title><itemizedlist><listitem override="none"><para><emphasis role="strong">x座標が200より小さい</emphasis> </para></listitem><listitem override="none"><para><emphasis role="strong">y座標が300より小さい</emphasis> </para></listitem><listitem override="none"><para>の２つの条件が成り立つ場合に対応します。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken16.png"/></imageobject><textobject><phrase>jouken16.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></listitem><listitem override="none"><para>テストタイルを２つ組み合わせて使います。 </para></listitem><listitem override="none"><para>１つ目のテストに<emphasis role="strong">x座標が200より小さい</emphasis>という条件を書き、 </para></listitem><listitem override="none"><para>１つ目のテストタイルの<emphasis role="strong">はい</emphasis>のところに２つ目のテストタイルを配置します。 </para></listitem><listitem override="none"><para>１つ目のテストに<emphasis role="strong">y座標が300より小さい</emphasis>という条件を書きます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken17.png"/></imageobject><textobject><phrase>jouken17.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></listitem><listitem override="none"><para>１つ目のテストが成り立つとき、対応する<emphasis role="strong">はい</emphasis>の部分が実行されます。 </para></listitem><listitem override="none"><para>ここにもテストがあるので、さらに条件判定が行われ </para></listitem><listitem override="none"><para>２つ目のテストも成り立つとき、赤で示した部分に書かれた処理が行われます。 </para></listitem></itemizedlist></section><section><title>例３</title><para>x座標が400から500の間にある、の場合も２つのテストを使って表します。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">x座標が400より大きい</emphasis> </para></listitem><listitem override="none"><para><emphasis role="strong">x座標が500より小さい</emphasis> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>例４</title><para>犬と青い丸の横方向の位置(X座標)が近いという条件の書き方。 </para><itemizedlist><listitem override="none"><para>犬にも丸にも大きさがありますが、中心座標で判定するものとします。 </para></listitem><listitem override="none"><para>上下位置(Y座標)は条件に含まないことにします。(上下どこでもよい) </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken07.png"/></imageobject><textobject><phrase>jouken07.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></listitem><listitem override="none"><para>X座標の差が20より小さいとすると条件は </para><itemizedlist><listitem override="none"><para><emphasis role="strong">いぬのx座標 - 青い丸のx座標 &lt; 20</emphasis> </para></listitem><listitem override="none"><para><emphasis role="strong">いぬのx座標 - 青い丸のx座標 &gt; -20</emphasis> </para></listitem></itemizedlist></listitem><listitem override="none"><para>の２つになります。 </para></listitem></itemizedlist><para>上の例のように２つのテストタイルを使ってもできますが、関数を使って１つの条件で書くことができます。 </para><itemizedlist><listitem override="none"><para>絶対値 <emphasis role="strong">| |</emphasis> を使うと１つの式に書けます。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">|いぬのx座標 - 青い丸のx座標| &lt; 20</emphasis> </para></listitem></itemizedlist></listitem><listitem override="none"><para>絶対値をとる関数は <emphasis role="strong">abs( )</emphasis> です。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">abs(いぬのx座標 - 青い丸のx座標) &lt; 20</emphasis> </para></listitem></itemizedlist></listitem><listitem override="none"><para>という式を作ります。 </para></listitem></itemizedlist><para>次のような形の式を作り、赤で示した２つの数の部分に、いぬのx座標 と 青い丸のx座標 を入れます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken13.png"/></imageobject><textobject><phrase>jouken13.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>このようになります。演算と数値を修正します。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=jouken14.png"/></imageobject><textobject><phrase>jouken14.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>条件の考え方</title><para>そのオブジェクトの位置を判定するには </para><itemizedlist><listitem override="none"><para>x座標 </para></listitem><listitem override="none"><para>y座標 </para></listitem></itemizedlist><para>と数値を比較する。 </para><para>２つのオブジェクトの位置関係をみるには、２つのオブジェクトの </para><itemizedlist><listitem override="none"><para>x座標とx座標 </para></listitem><listitem override="none"><para>y座標とy座標 </para></listitem></itemizedlist><para>を比較する。 </para><para>２つのオブジェクトの距離をみるには、 観察カテゴリにある </para><itemizedlist><listitem override="none"><para>タートルへの距離 </para></listitem></itemizedlist><para>を使う。 </para></section></section></article>