welcome: please sign in
location: "etoys処理の順番を考える"の差分
3と7のリビジョン間の差分 (その間の編集: 4回)
2012-06-06 02:12:38時点のリビジョン3
サイズ: 1097
編集者: masahiko
コメント:
2012-06-06 02:42:06時点のリビジョン7
サイズ: 3566
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
#acl All:
行 21: 行 20:
つぎの2つのスクリプトを考えます。
 . {{attachment:junban1.png}}
 . {{attachment:junban2.png}}
1回だけ実行したり、どちらかだけをチクタクにするのはよいのですが

2つともチクタクにすると、全体としての動作が分かりにくくなってしまいます。

2つとも実行したいのであれば
1つのスクリプトにまとめたほうが分かりやすい。
 . {{attachment:junban3.png}}

'''チクタク'''にするスクリプトは
1つのオブジェクトにたいして'''1つだけ'''にして考えましょう。
行 22: 行 34:
=== 並べる順で処理が異なる === === 並べる順が重要 ===
正しい順に並べないとうまく動作しないものもあります。

最初の例です。
 . {{attachment:junban4.png}}
1回だけ実行するとして考えると
 . 入れ物のカーソル位置 ← 2
の後で
 . ウサギの画像 ← 入れ物のカーソル位置の画像
を行わないとだめなことがわかります。

判定により画像を変える場合も
同じ順番に並べればよい。
 . {{attachment:junban5.png}}
ウサギが
 . 赤色のところに来たときはカーソル位置1の画像に
 . そうでないときはカーソル位置2の画像になります。
行 25: 行 54:
 . {{attachment:junban1.png}}
 . {{attachment:junban2.png}}
 . {{attachment:junban3.png}}
 . {{attachment:junban5.png}}
複数の判定が必要なときはさらに注意が必要です。

ウサギが
 . 黄色のところに来たときはカーソル位置3の画像に
 . そうでないときはカーソル位置2の画像
にするときも、同様に書けます。
行 30: 行 62:

==== 問題 ====
ウサギが
 . 赤色のところに来たときはカーソル位置1の画像に
 . 黄色のところに来たときはカーソル位置3の画像に
 . そうでないときはカーソル位置2の画像に
するにはどうしたらよいでしょうか。

==== 間違い ====
行 31: 行 72:
上の2つのスクリプトのテストの部分を並べたものです。
 . 赤色のテストをした後、黄色のテストをしています。
ウサギが赤色のところにいるときの処理はつぎのようになります。
 1. ウサギを進める
 1. 赤色のテストが成り立つので、カーソル位置は1になる
 1. 黄色のテストが成り立たないので、カーソル位置は2になる
 1. カーソル位置2の画像が表示される

==== 正解1 ====

赤色と重なっていないときだけ
黄色のテストを行えばよいので、

赤色のテストの'''いいえ'''の部分に黄色のテストを入れます。
行 32: 行 87:

==== 正解2 ====

このような方法もあります。

処理の順番を考える

スクリプト内で命令をどの順にならべたらよいのか考えましょう。


スクリプト内では順番に実行される

スクリプト内にいくつかの命令を並べたときは 上から順に実行されます。

3つの命令を並べた例です。

  • junban4.png

次の3つが順に実行されます。

  1. ウサギを進める5
  2. 入れ物のカーソル位置 ← 2
  3. ウサギの画像 ← 入れ物のカーソル位置の画像

!を押して1回だけ実行してみると分かります。

チクタクでは分かりにくいかもしれません。


1つのスクリプトで考える

つぎの2つのスクリプトを考えます。

  • junban1.png

  • junban2.png

1回だけ実行したり、どちらかだけをチクタクにするのはよいのですが

2つともチクタクにすると、全体としての動作が分かりにくくなってしまいます。

2つとも実行したいのであれば 1つのスクリプトにまとめたほうが分かりやすい。

  • junban3.png

チクタクにするスクリプトは 1つのオブジェクトにたいして1つだけにして考えましょう。


並べる順が重要

正しい順に並べないとうまく動作しないものもあります。

最初の例です。

  • junban4.png

1回だけ実行するとして考えると

  • 入れ物のカーソル位置 ← 2

の後で

  • ウサギの画像 ← 入れ物のカーソル位置の画像

を行わないとだめなことがわかります。

判定により画像を変える場合も 同じ順番に並べればよい。

  • junban5.png

ウサギが

  • 赤色のところに来たときはカーソル位置1の画像に
  • そうでないときはカーソル位置2の画像になります。


複数の判定が必要なとき

複数の判定が必要なときはさらに注意が必要です。

ウサギが

  • 黄色のところに来たときはカーソル位置3の画像に
  • そうでないときはカーソル位置2の画像

にするときも、同様に書けます。

  • junban6.png

問題

ウサギが

  • 赤色のところに来たときはカーソル位置1の画像に
  • 黄色のところに来たときはカーソル位置3の画像に
  • そうでないときはカーソル位置2の画像に

するにはどうしたらよいでしょうか。

間違い

  • junban7.png

上の2つのスクリプトのテストの部分を並べたものです。

  • 赤色のテストをした後、黄色のテストをしています。

ウサギが赤色のところにいるときの処理はつぎのようになります。

  1. ウサギを進める
  2. 赤色のテストが成り立つので、カーソル位置は1になる
  3. 黄色のテストが成り立たないので、カーソル位置は2になる
  4. カーソル位置2の画像が表示される

正解1

赤色と重なっていないときだけ 黄色のテストを行えばよいので、

赤色のテストのいいえの部分に黄色のテストを入れます。

  • junban8.png

正解2

このような方法もあります。

  • junban9.png

etoys処理の順番を考える (最終更新日時 2012-06-06 02:42:06 更新者 masahiko)