<?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>24</revnumber><date>2012-06-22 00:13:05</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>23</revnumber><date>2012-06-21 00:38:35</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>22</revnumber><date>2012-06-19 04:42:13</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>21</revnumber><date>2012-06-19 04:31:01</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>20</revnumber><date>2012-06-18 13:09:31</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>19</revnumber><date>2012-06-18 13:04:51</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>18</revnumber><date>2012-06-18 13:01:30</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>17</revnumber><date>2012-06-18 12:59:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2012-06-17 13:09:31</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2012-06-17 12:59:59</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2012-06-17 12:57:47</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2012-06-17 02:09:44</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2012-06-17 01:56:31</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2012-06-17 01:56:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2012-06-17 01:55:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-06-17 01:46:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-06-16 13:31:40</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-06-16 13:30:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-06-16 13:25:55</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-06-16 13:23:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-06-16 13:22:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-06-16 13:18:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-06-15 07:51:15</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-06-15 07:47:33</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game31.png"/></imageobject><textobject><phrase>game31.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>例えばこのような画面で </para><itemizedlist><listitem><para>いくつかある障害物のところは通れない。 </para></listitem><listitem><para>途中でアイテムを取ってからでないと、ゴールできない。 </para></listitem></itemizedlist><para>という条件で作ることにします。 </para><para>例えば </para><itemizedlist><listitem override="none"><para>アイテムを取った後では障害物の１つは通れる </para></listitem></itemizedlist><para>ことにすれば上の画面でもゴールできるようになります。 (他のアイデアでもかまいません) </para><!--rule (<hr>) is not applicable to DocBook--><section><title>変数の利用</title><para>アイテムを取ったかどうかを 真偽値型の変数を用いて表すことができます。 </para><para>主人公の変数「<emphasis role="strong">アイテムを持っている</emphasis>」を </para><itemizedlist><listitem><para>アイテムを取る前は値が「いいえ」 </para></listitem><listitem><para>アイテムを取った後は値が「はい」 </para></listitem></itemizedlist><para>となるようにして使います。 </para><para>こうしておくと、 アイテムを取った後か取る前かを、変数の値を参照するだけで判定でき スクリプトが簡単になります。 </para><para>主人公のビューアを開き 変数を作成します。 </para><itemizedlist><listitem override="none"><para>変数名をわかりやすくつけます </para></listitem><listitem override="none"><para>種類を<emphasis role="strong">真偽値型</emphasis>にします </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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game32.png"/></imageobject><textobject><phrase>game32.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>値は「はい」「いいえ」のどちらかです。 </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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game33.png"/></imageobject><textobject><phrase>game33.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>くわしくは<ulink url="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys真偽値型の変数を利用する/~masahiko/moin.cgi/etoys%E3%82%B8%E3%83%A7%E3%82%A4%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF#">ジョイスティック</ulink>のページを参照してください。 </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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game34.png"/></imageobject><textobject><phrase>game34.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>この方法では 障害物に当たったら そのあとずっと動けなくなってしまいます。 </para><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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game35.png"/></imageobject><textobject><phrase>game35.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ジョイスティックで動かしているときも、 この考え方でスクリプトを書けます。 </para><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>スタートボタン</title><para>スタートボタンが押されたときは </para><itemizedlist><listitem override="none"><para>オブジェクトを指定の位置に配置したり、 </para></listitem><listitem override="none"><para>必要なスクリプトをスタートさせる </para></listitem></itemizedlist><para>などの処理を行いますが、それに加えて </para><itemizedlist><listitem override="none"><para>変数「アイテムを持っている」の値を<emphasis role="strong">いいえ</emphasis>にしておきます。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game36.png"/></imageobject><textobject><phrase>game36.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>アイテムを取ったとき</title><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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game37.png"/></imageobject><textobject><phrase>game37.png</phrase></textobject></inlinemediaobject> </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></itemizedlist><para>ようにする場合を例として説明します。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game38.png"/></imageobject><textobject><phrase>game38.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>真偽値型の変数はテストの内容としてそのまま使えます。 </para><itemizedlist><listitem override="none"><para>テストの右に変数の名前の部分をドラッグして入れます。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game39.png"/></imageobject><textobject><phrase>game39.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game40.png"/></imageobject><textobject><phrase>game40.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%E7%9C%9F%E5%81%BD%E5%80%A4%E5%9E%8B%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=game41.png"/></imageobject><textobject><phrase>game41.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>これを読むと </para><itemizedlist><listitem override="none"><para>主人公がアイテムを持っているが </para><itemizedlist><listitem override="none"><para>いいえのときで </para><itemizedlist><listitem override="none"><para>障害物と重なったときは </para><itemizedlist><listitem override="none"><para>音をならす </para></listitem></itemizedlist></listitem></itemizedlist></listitem></itemizedlist></listitem></itemizedlist><para>です。つまり </para><itemizedlist><listitem override="none"><para>主人公がアイテムを持っていなくて、障害物と重なったときは音をならす </para></listitem></itemizedlist><para>となります。 </para><!--rule (<hr>) is not applicable to DocBook--><para> アイテムを何にするかや、 アイテムを取ったあとの動作は 自由に考えて実現しましょう。 </para><para>次回続きを作り、ゲームを完成させます。 </para></section></section></article>