welcome: please sign in
location: "etoys状態とイベントに分けて考える"の差分
1と22のリビジョン間の差分 (その間の編集: 21回)
2011-05-24 01:26:34時点のリビジョン1
サイズ: 384
編集者: masahiko
コメント:
2011-05-24 12:55:21時点のリビジョン22
サイズ: 4532
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
状態とは
 . そのオブジェクト自身の状態
 . 属性の値
 . 一定の動作を行っている(チクタク)
 . 1回だけの動作を行う(!)

イベントとは
 . 事象
 . アクション、入力、なにかが起こった
 . ぶつかった
 . ボタンが押された
行 4: 行 16:
=== 例 === === 状態図 ===
状態は角の丸い長方形で表し、中に内容を書きます。
 . {{attachment:joutai01.png}}
ある状態から、ある状態に変わることを矢印でつないで表します。
行 6: 行 21:
つぎのような作品(プロジェクト)を作成する場合を考えます。 イベントは矢印に記入します。
行 8: 行 23:
 . {{attachment:joutai02.png}}
開始状態は黒丸で表します。
 . {{attachment:joutai03.png}}
終了状態が必要なときはこの記号を使います。
 . {{attachment:joutai04.png}}

-----
=== 例1 ===

{{{
行 10: 行 35:
}}}

1匹ずつ考えます。

ウサギの状態を考え、どのように変わるかを矢印でつなぐと状態図ができます。
 . {{attachment:joutai05.png}}
----
それぞれの状態の部分に対応するスクリプトを考えます。

{{attachment:joutai06.png}}
 . 座標を設定すればよいのでこのように書けます。
 . {{attachment:joutai10.png}}
{{attachment:joutai07.png}}
 . 進めるタイルを使って書けます。
 . {{attachment:joutai11.png}}
 . スピードや、進む向きの調整もここに書きます。
 . 座標への代入を使って動かすこともできます。
{{attachment:joutai08.png}}
 . 向きを変えるだけなら回すを使って書けます。
 . {{attachment:joutai12.png}}
 . 回す量を調整すること。
{{attachment:joutai09.png}}
 . 吹き出しを使った書き方の例です。
 . {{attachment:joutai13.png}}
----
次に矢印に対応する処理を追加していきます。

{{attachment:joutai07.png}}
 . ここから始めます。
 . スクリプトは例えばこのように書けました。
 . {{attachment:joutai15.png}}
 . カメにぶつかったときの処理を追加するとこうなります。
 . ぶつかったなど条件のイベントはテストタイルで記述します。
 . {{attachment:joutai16.png}}
ウサギの向きを変えたあと
イベント記入のない矢印に対応する命令がありませんが、
このスクリプトがチクタクで動作している状態を考えると、
ぶつかったときに1回向きを変えて、
チクタクにもどっているのが分かります。
 . {{attachment:joutai14.png}}
ゴールに着いたときの処理も同様にテストタイルで追加できます。
 . {{attachment:joutai17.png}}
表示を行った後はチクタク状態に戻らず、
終了するため「ストップする」が必要です。
 . {{attachment:joutai18.png}}
開始の処理はボタンのスクリプトに書きます。
 . {{attachment:joutai19.png}}
右の矢印は「ウサギのスクリプト1」につながっているので
「ウサギのスクリプト1」をスタートする命令を加えます。
 . {{attachment:joutai20.png}}
このスクリプトは1回だけ実行されます。チクタクではありません。
----
=== 例2 ===
{{{
赤ずきんは花畑によってからおばあさんの家に行く。
}}}
状態とイベントに分けて考えるとこのようになります。
 . {{attachment:joutai21.png}}
「花畑に向かっている」と「おばあさんの家に向かっている」は
どちらもチクタクで動作します。

それぞれを1つのスクリプトで記述するとすれば、

「花畑に向かっている」は
 ||<-3#99ff99>○スクリプト1||
 ||<-3#ddffdd>花畑の方に進む||
 ||<#ffccaa>テスト||<-2#ffccaa>花畑についた||
 ||<|2-2#ffccaa>はい||<#ffccaa>スクリプト2をスタートする||
 ||<#ffccaa>スクリプト1をストップする||
 ||<-2>いいえ|| ||

「おばあさんの家に向かっている」は
 ||<-3#99ff99>○スクリプト2||
 ||<-3#ddffdd>おばあさんの家の方に進む||
 ||<#ffccaa>テスト||<-2#ffccaa>おばあさんの家についた||
 ||<-2#ffccaa>はい||<#ffccaa>スクリプト2をストップする||
 ||<-2>いいえ|| ||

状態とイベントに分けて考える

状態とは

  • そのオブジェクト自身の状態
  • 属性の値
  • 一定の動作を行っている(チクタク)
  • 1回だけの動作を行う(!)

イベントとは

  • 事象
  • アクション、入力、なにかが起こった
  • ぶつかった
  • ボタンが押された


状態図

状態は角の丸い長方形で表し、中に内容を書きます。

  • joutai01.png

ある状態から、ある状態に変わることを矢印でつないで表します。

イベントは矢印に記入します。

  • joutai02.png

開始状態は黒丸で表します。

  • joutai03.png

終了状態が必要なときはこの記号を使います。

  • joutai04.png


例1

スタートボタンを押すと2匹がかけっこを始め、どちらかがゴールについたらどちらが勝ったか表示して止まる。
あるものにぶつかったときは別の動作をする。

1匹ずつ考えます。

ウサギの状態を考え、どのように変わるかを矢印でつなぐと状態図ができます。

  • joutai05.png


それぞれの状態の部分に対応するスクリプトを考えます。

joutai06.png

  • 座標を設定すればよいのでこのように書けます。
  • joutai10.png

joutai07.png

  • 進めるタイルを使って書けます。
  • joutai11.png

  • スピードや、進む向きの調整もここに書きます。
  • 座標への代入を使って動かすこともできます。

joutai08.png

  • 向きを変えるだけなら回すを使って書けます。
  • joutai12.png

  • 回す量を調整すること。

joutai09.png

  • 吹き出しを使った書き方の例です。
  • joutai13.png


次に矢印に対応する処理を追加していきます。

joutai07.png

  • ここから始めます。
  • スクリプトは例えばこのように書けました。
  • joutai15.png

  • カメにぶつかったときの処理を追加するとこうなります。
  • ぶつかったなど条件のイベントはテストタイルで記述します。
  • joutai16.png

ウサギの向きを変えたあと イベント記入のない矢印に対応する命令がありませんが、 このスクリプトがチクタクで動作している状態を考えると、 ぶつかったときに1回向きを変えて、 チクタクにもどっているのが分かります。

  • joutai14.png

ゴールに着いたときの処理も同様にテストタイルで追加できます。

  • joutai17.png

表示を行った後はチクタク状態に戻らず、 終了するため「ストップする」が必要です。

  • joutai18.png

開始の処理はボタンのスクリプトに書きます。

  • joutai19.png

右の矢印は「ウサギのスクリプト1」につながっているので 「ウサギのスクリプト1」をスタートする命令を加えます。

  • joutai20.png

このスクリプトは1回だけ実行されます。チクタクではありません。


例2

赤ずきんは花畑によってからおばあさんの家に行く。

状態とイベントに分けて考えるとこのようになります。

  • joutai21.png

「花畑に向かっている」と「おばあさんの家に向かっている」は どちらもチクタクで動作します。

それぞれを1つのスクリプトで記述するとすれば、

「花畑に向かっている」は

  • ○スクリプト1

    花畑の方に進む

    テスト

    花畑についた

    はい

    スクリプト2をスタートする

    スクリプト1をストップする

    いいえ

「おばあさんの家に向かっている」は

  • ○スクリプト2

    おばあさんの家の方に進む

    テスト

    おばあさんの家についた

    はい

    スクリプト2をストップする

    いいえ

etoys状態とイベントに分けて考える (最終更新日時 2011-05-24 13:17:12 更新者 masahiko)