welcome: please sign in
location: "etoys真偽値型の変数を利用する"の差分
22と23のリビジョン間の差分
2012-06-19 04:42:13時点のリビジョン22
サイズ: 4225
編集者: masahiko
コメント:
2012-06-21 00:38:35時点のリビジョン23
サイズ: 4468
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 38: 行 38:
値は「はい」「いいえ」のどちらかになります。 値は「はい」「いいえ」のどちらかす。
行 114: 行 114:
です。つまり
 . 主人公がアイテムを持っていなくて、障害物と重なったときは音をならす
行 117: 行 119:
アイテムを何にするかや、
アイテムを取ったあとの動作は
自由に考えて実現しましょう。

真偽値型の変数を利用する

主人公をジョイスティックを使って動かして遊ぶゲームを作ります。

  • game31.png

例えばこのような画面で

  • いくつかある障害物のところは通れない。
  • 途中でアイテムを取ってからでないと、ゴールできない。

という条件で作ることにします。

例えば

  • アイテムを取った後では障害物の1つは通れる

ことにすれば上の画面でもゴールできるようになります。 (他のアイデアでもかまいません)


変数の利用

アイテムを取ったかどうかを 真偽値型の変数を用いて表すことができます。

主人公の変数「アイテムを持っている」を

  • アイテムを取る前は値が「いいえ」
  • アイテムを取った後は値が「はい」

となるようにして使います。

こうしておくと、 アイテムを取った後か取る前かを、変数の値を参照するだけで判定でき スクリプトが簡単になります。

主人公のビューアを開き 変数を作成します。

  • 変数名をわかりやすくつけます
  • 種類を真偽値型にします

このようになります。

  • game32.png

値は「はい」「いいえ」のどちらかです。


ジョイスティックで動かす

主人公をジョイスティックで動かせるようにします。

単純な例を示します。

  • game33.png

くわしくはジョイスティックのページを参照してください。


障害物にぶつかったとき

障害物のところは通れないようにします。

障害物に当たったかどうか判定し、 あたっていないときだけ動けばよいので このように書けそうですが……

  • game34.png

この方法では 障害物に当たったら そのあとずっと動けなくなってしまいます。

考え方

とりあえず動かしてみて、 障害物にぶつかったら直前の位置にもどせばよい。

例えば、右へ移動してぶつかったときは、同じ値だけ左へ移動すれば元の位置にもどります。

  • game35.png

ジョイスティックで動かしているときも、 この考え方でスクリプトを書けます。


スタートボタン

スタートボタンが押されたときは

  • オブジェクトを指定の位置に配置したり、
  • 必要なスクリプトをスタートさせる

などの処理を行いますが、それに加えて

  • 変数「アイテムを持っている」の値をいいえにしておきます。

  • game36.png


アイテムを取ったとき

アイテムを取ったとき 変数「アイテムを持っている」の値をはいに変えます。

  • game37.png


アイテムを取った後

変数「アイテムを持っている」の値により処理を変えます。

障害物にぶつかったときの処理のうち

  • 次の内容についてはアイテムを取る前では行うが、アイテムを取った後では行わない、

ようにする場合を例として説明します。

  • game38.png

真偽値型の変数はテストの内容としてそのまま使えます。

  • テストの右に変数の名前の部分をドラッグして入れます。
  • game39.png

このテスト結果がいいえのときだけ 処理を行えばよいので、 対応する内容のタイルをいいえの後ろに配置します。

  • game40.png

このようになります。

  • game41.png

これを読むと

  • 主人公がアイテムを持っているが
    • いいえのときで
      • 障害物と重なったときは
        • 音をならす

です。つまり

  • 主人公がアイテムを持っていなくて、障害物と重なったときは音をならす

となります。


アイテムを何にするかや、 アイテムを取ったあとの動作は 自由に考えて実現しましょう。

次回続きを作り、ゲームを完成させます。

etoys真偽値型の変数を利用する (最終更新日時 2012-06-22 00:13:05 更新者 masahiko)