<?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>11</revnumber><date>2012-06-07 13:54:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2012-06-02 12:19:54</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-06-02 12:14:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-06-02 12:01:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-06-02 11:55:21</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-06-02 09:20:33</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-06-02 09:17:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-06-02 09:08:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-06-02 09:03:19</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-06-02 09:00:21</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-06-02 08:57:11</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>属性の値を使って動かす</title><para>進むや回すを使わないで動かすこともできます。 </para><para>属性の値を修正することで動かします。 </para><para>この方法では、<emphasis role="strong">画面の端を超えて</emphasis>移動することができます。 画面から消えてしまうことがあるので、 回復方法を準備しておくこと。 </para><!--rule (<hr>) is not applicable to DocBook--><section><title>属性とその値</title><para>ビューアで間に <inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=viewer12.png"/></imageobject><textobject><phrase>viewer12.png</phrase></textobject></inlinemediaobject> がある行は オブジェクトの<emphasis role="strong">属性</emphasis>を表す項目です。 </para><itemizedlist><listitem override="none"><para>矢印の左側は属性名。 </para></listitem><listitem override="none"><para>矢印の右側は属性の現在の値です。 </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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji00.png"/></imageobject><textobject><phrase>hituji00.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ひつじの属性として、 </para><itemizedlist><listitem override="none"><para>x座標 </para></listitem><listitem override="none"><para>y座標 </para></listitem><listitem override="none"><para>向き </para></listitem></itemizedlist><para>があり、 </para><itemizedlist><listitem override="none"><para>x座標の値は 585 </para></listitem></itemizedlist><para>です。 </para><para>オブジェクトを移動するとx座標、y座標の値が変わります。 </para><para>x座標、y座標の値を指定するとオブジェクトが移動します。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>位置を指定する</title><para>ビューアから <inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%B1%9E%E6%80%A7%E3%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=viewer12.png"/></imageobject><textobject><phrase>viewer12.png</phrase></textobject></inlinemediaobject> の部分から引き出すと 属性の値を指定するスクリプトを作ることができます。 </para><para>x座標を 500 に設定するスクリプトです。 </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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji01.png"/></imageobject><textobject><phrase>hituji01.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>これを(１回)実行すると、ひつじはx座標が500の位置に移動します。 </para><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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=zahyo02.png"/></imageobject><textobject><phrase>zahyo02.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>左下が原点(x=0,y=0)です。 </para></listitem><listitem override="none"><para>右端のxの値、上端のyの値は画面サイズにより異なります。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>他のオブジェクトの属性値を使って設定する</title><para>ひつじのx座標に、いぬのx座標の値を<emphasis role="strong">代入</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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji02.png"/></imageobject><textobject><phrase>hituji02.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>実行すると、ひつじのx方向(横方向)の位置がいぬと同じになります。 </para></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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji03.png"/></imageobject><textobject><phrase>hituji03.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>実行すると、ひつじのx方向(横方向)の位置がいぬより５０だけ右になります。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>自分の属性値を使って更新する</title><para>ほかのオブジェクトではなく、自分自身の属性値をつかって 上と同じことを記述したスクリプトです。 </para><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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji04.png"/></imageobject><textobject><phrase>hituji04.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>例えば </para><itemizedlist><listitem override="none"><para>ひつじのx座標が３００のときこのスクリプトを１回実行すると、 </para></listitem><listitem override="none"><para>そのときのx座標の値３００に１０を加えた値が計算され </para></listitem><listitem override="none"><para>300+10 = 310 </para></listitem><listitem override="none"><para>３１０がひつじのx座標の新しい値として代入されます。 </para></listitem></itemizedlist><para>この結果、 ひつじのx座標の値は３１０になり、ひつじは右に１０だけ移動します。 </para><para>計算式をつかって属性値を増やすことで移動できます。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">計算式をつかって値を増やす書き方は、プログラミングではしばしば使われます。</emphasis> </para></listitem></itemizedlist><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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji05.png"/></imageobject><textobject><phrase>hituji05.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji06.png"/></imageobject><textobject><phrase>hituji06.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%81%AE%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99?action=AttachFile&amp;do=get&amp;target=hituji07.png"/></imageobject><textobject><phrase>hituji07.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section></section></article>