<?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>7</revnumber><date>2012-06-06 02:42:06</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-06-06 02:41:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-06-06 02:40:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-06-06 02:18:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-06-06 02:12:38</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-06-06 02:03:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-06-05 03:24:05</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>処理の順番を考える</title><para>スクリプト内で命令をどの順にならべたらよいのか考えましょう。 </para><!--rule (<hr>) is not applicable to DocBook--><section><title>スクリプト内では順番に実行される</title><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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban4.png"/></imageobject><textobject><phrase>junban4.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>次の３つが順に実行されます。 </para><orderedlist numeration="arabic"><listitem><para>ウサギを進める５ </para></listitem><listitem><para>入れ物のカーソル位置 ← ２ </para></listitem><listitem><para>ウサギの画像 ← 入れ物のカーソル位置の画像 </para></listitem></orderedlist><para>！を押して１回だけ実行してみると分かります。 </para><para>チクタクでは分かりにくいかもしれません。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>１つのスクリプトで考える</title><para>つぎの２つのスクリプトを考えます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban1.png"/></imageobject><textobject><phrase>junban1.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban2.png"/></imageobject><textobject><phrase>junban2.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban3.png"/></imageobject><textobject><phrase>junban3.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para><emphasis role="strong">チクタク</emphasis>にするスクリプトは １つのオブジェクトにたいして<emphasis role="strong">１つだけ</emphasis>にして考えましょう。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>並べる順が重要</title><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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban4.png"/></imageobject><textobject><phrase>junban4.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>１回だけ実行するとして考えると </para><itemizedlist><listitem override="none"><para>入れ物のカーソル位置 ← ２ </para></listitem></itemizedlist><para>の後で </para><itemizedlist><listitem override="none"><para>ウサギの画像 ← 入れ物のカーソル位置の画像 </para></listitem></itemizedlist><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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban5.png"/></imageobject><textobject><phrase>junban5.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ウサギが </para><itemizedlist><listitem override="none"><para>赤色のところに来たときはカーソル位置１の画像に </para></listitem><listitem override="none"><para>そうでないときはカーソル位置２の画像になります。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>複数の判定が必要なとき</title><para>複数の判定が必要なときはさらに注意が必要です。 </para><para>ウサギが </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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban6.png"/></imageobject><textobject><phrase>junban6.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><section><title>問題</title><para>ウサギが </para><itemizedlist><listitem override="none"><para>赤色のところに来たときはカーソル位置１の画像に </para></listitem><listitem override="none"><para>黄色のところに来たときはカーソル位置３の画像に </para></listitem><listitem override="none"><para>そうでないときはカーソル位置２の画像に </para></listitem></itemizedlist><para>するにはどうしたらよいでしょうか。 </para></section><section><title>間違い</title><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban7.png"/></imageobject><textobject><phrase>junban7.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>上の２つのスクリプトのテストの部分を並べたものです。 </para><itemizedlist><listitem override="none"><para>赤色のテストをした後、黄色のテストをしています。 </para></listitem></itemizedlist><para>ウサギが赤色のところにいるときの処理はつぎのようになります。 </para><orderedlist numeration="arabic"><listitem><para>ウサギを進める </para></listitem><listitem><para>赤色のテストが成り立つので、カーソル位置は１になる </para></listitem><listitem><para>黄色のテストが成り立たないので、カーソル位置は２になる </para></listitem><listitem><para>カーソル位置２の画像が表示される </para></listitem></orderedlist></section><section><title>正解１</title><para>赤色と重なっていないときだけ 黄色のテストを行えばよいので、 </para><para>赤色のテストの<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%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban8.png"/></imageobject><textobject><phrase>junban8.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section><section><title>正解２</title><para>このような方法もあります。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%87%A6%E7%90%86%E3%81%AE%E9%A0%86%E7%95%AA%E3%82%92%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=junban9.png"/></imageobject><textobject><phrase>junban9.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section></section></section></article>