<?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>10</revnumber><date>2012-04-27 00:44:04</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-04-27 00:33:50</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-04-27 00:28:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-04-25 13:37:04</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-04-25 12:12:12</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-04-25 12:08:52</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-04-25 12:02:46</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-04-25 12:01:55</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-04-25 12:01:15</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-04-25 01:54:31</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>１つのスクリプトで考える</title><para>動作のタイルを引き出してならべることで、スクリプトをつくることができました。 </para><para>スクリプトを簡単に作ることができるのですが、 たくさんのスクリプトが同時に(チクタクで)動いていると どのように動作しているのかわかりにくくなってしまいます。 </para><para>ここでは<emphasis role="strong">１つのスクリプト</emphasis>だけを使った動作を考えてみましょう。 </para><para>１つのもの(オブジェクト)について１つのスクリプトで考えましょう。 </para><itemizedlist><listitem override="none"><para>ものがいくつかあるときは、それぞれに１つです。 </para></listitem><listitem override="none"><para>もちろん動かないオブジェクトにはスクリプトは不要です。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>条件を含まないスクリプト</title><para>動作を表すタイルを並べて作ります。 </para><itemizedlist><listitem><para>進める </para><itemizedlist><listitem override="none"><para>指定量だけ進みます </para></listitem></itemizedlist></listitem><listitem><para>回す </para><itemizedlist><listitem override="none"><para>指定角度だけ回転します </para></listitem></itemizedlist></listitem><listitem><para>はねかえる </para><itemizedlist><listitem override="none"><para>ウインドウの端にぶつかったとき向きを変える指定です </para></listitem></itemizedlist></listitem><listitem><para>以下の方向に向く </para><itemizedlist><listitem override="none"><para>指定したオブジェクトの方を向きます </para></listitem></itemizedlist></listitem></itemizedlist><para>１回の実行ごとに、並べた順に実行されます。 </para><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%EF%BC%91%E3%81%A4%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=script101.png"/></imageobject><textobject><phrase>script101.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><section><title>全体が１つのテストタイルのスクリプト</title><para>スクリプトの中にテストタイルを１つ配置し </para><itemizedlist><listitem><para>テストの右に条件を </para></listitem><listitem><para>条件が成り立つときの処理をはいの右に </para></listitem><listitem><para>条件が成り立たないときの処理をいいえの右に </para></listitem></itemizedlist><para>書きます。 </para><para><emphasis role="strong">注意</emphasis> </para><itemizedlist><listitem><para><emphasis role="strong">条件</emphasis>は必ず記入すること </para></listitem><listitem><para><emphasis role="strong">はい</emphasis>または<emphasis role="strong">いいえ</emphasis>の少なくとも一方は記入すること </para></listitem></itemizedlist><para><emphasis role="strong">条件</emphasis>には 「以下のモーフが次のものと重なっているか」 を使いましょう。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">ドット</emphasis>の部分に相手の<emphasis role="strong">名前</emphasis>を入れて使います。 </para></listitem></itemizedlist><para>次のように実行されます。 </para><itemizedlist><listitem><para>指定した相手と重なったときには<emphasis role="strong">はい</emphasis>の右に書いた動作が行われます。 </para></listitem><listitem><para>ぶつかっていないときには<emphasis role="strong">いいえ</emphasis>の右に書いた動作が行われます。 </para></listitem></itemizedlist><section><title>例</title><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%EF%BC%91%E3%81%A4%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=script102.png"/></imageobject><textobject><phrase>script102.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>次のように実行されます。 </para><itemizedlist><listitem><para>いぬが<emphasis role="strong">おやつ</emphasis>と重なったときは </para><itemizedlist><listitem override="none"><para>いぬを５進め </para></listitem><listitem override="none"><para>いぬを５度回します </para></listitem></itemizedlist></listitem><listitem><para>いぬが<emphasis role="strong">おやつ</emphasis>と重なっていないときは </para><itemizedlist><listitem override="none"><para>いぬを１０進めます </para></listitem></itemizedlist></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>動作のタイルとテストタイルを並べたスクリプト</title><para>順に並べられたタイルはその順に実行されます。 </para><para>テストタイルがあるとそこでは条件判定が行われ、 <emphasis role="strong">はい</emphasis>か<emphasis role="strong">いいえ</emphasis>のどちらかの処理が実行されます。 </para><section><title>例</title><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%EF%BC%91%E3%81%A4%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=script103.png"/></imageobject><textobject><phrase>script103.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>次のように実行されます。 </para><orderedlist numeration="arabic"><listitem><para>いぬを５進めます </para></listitem><listitem><para>端にぶつかったら向きを変えます </para></listitem><listitem><para>いぬが<emphasis role="strong">おやつ</emphasis>と重なったときは </para><itemizedlist><listitem override="none"><para>いぬを５度回します </para></listitem></itemizedlist></listitem></orderedlist><para>いぬが<emphasis role="strong">おやつ</emphasis>と重ならなかったときは </para><orderedlist numeration="arabic"><listitem><para>いぬを５進めます </para></listitem><listitem><para>端にぶつかったら向きを変えます </para></listitem></orderedlist><para>だけが行われることになります。 </para><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>応用</title><para>上記の考え方を組み合わせて使うことができます。 </para><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%EF%BC%91%E3%81%A4%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E8%80%83%E3%81%88%E3%82%8B?action=AttachFile&amp;do=get&amp;target=script104.png"/></imageobject><textobject><phrase>script104.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>どのような動きになるか考えましょう。 </para></section></section></section></article>