「1時間で学ぶソフトウェアの仕組みのプログラムを、宝物を全部拾ったら
終了するように拡張したい」という質問をいただきましたので、サンプル
を書いておきます。1/12のプログラムの応用です。
1つ目は、画面に宝物の数を表示して、拾うたびに減らしていく方法です。
まず、残りの数を表示する「得点」というフィールドを作り、宝物の数を
入れておきます。宝物の数を変えたときは、この数字も変えてください。
得点=フィールド!作る 3 書く。
そして、自分の値を1減らす「カウント」というメソッドを定義します。こ
の中で、値が0になったときは「おめでとう!」というメッセージを表示し
て、タイマー(時計)を中断するようにしておきます。
得点:カウント=「自分!((自分!読む)−1)書く。「(得点!読む)<=0」!なら「ラベル!"クリア!"作る。時計!中断」実行」。
そして、カメ太の「衝突」のメソッドを、衝突したときに相手を消すこと
に加えて、得点をカウントダウンするように修正します。
かめた:衝突=「|相手| 相手!消える。得点!カウント」。
プログラムをまとめると、次のようになります。最後の3行が修正と追加を
した部分です。
かめた=タートル!作る。 左ボタン=ボタン!"左" 作る。 左ボタン:動作=「かめた!30 左回り」。 右ボタン=ボタン!"右" 作る。 右ボタン:動作=「かめた!30 右回り」。 時計=タイマー!作る。 時計!「かめた!10 歩く」実行。 タートル!作る "tulip.png" 変身する ペンなし 100 100 位置。 タートル!作る "tulip.png" 変身する ペンなし 100 -100 位置。 タートル!作る "tulip.png" 変身する ペンなし -100 100 位置。 かめた:衝突=「|相手| 相手!消える。得点!カウント」。 得点=フィールド!作る 3 書く。 得点:カウント=「自分!((自分!読む)−1)書く。「(得点!読む)<=0」!なら「ラベル!"クリア!"作る。時計!中断」実行」。
宝物たち=配列!作る。
続いて、宝物を作り、配列に入れます。
宝物たち!(タートル!作る "tulip.png" 変身する ペンなし 100 100 位置)書く。
宝物たち!(タートル!作る "tulip.png" 変身する ペンなし 100 -100 位置)書く。
宝物たち!(タートル!作る "tulip.png" 変身する ペンなし -100 100 位置)書く。
そして、衝突したときに配列から削除して、配列が空になったときの処理
を記述します。
かめた:衝突=「|相手| 相手!消える。宝物たち!(相手)消す。「(宝物たち!要素数?)<=0」!なら「ラベル!"クリア!"作る。時計!中断」実行」。
プログラムをまとめると、次のようになります。最後の5行が修正した部分
です。
かめた=タートル!作る。 左ボタン=ボタン!"左" "LEFT"作る。 左ボタン:動作=「かめた!30 左回り」。 右ボタン=ボタン!"右" "RIGHT"作る。 右ボタン:動作=「かめた!30 右回り」。 時計=タイマー!作る。 時計!「かめた!10 歩く」実行。 宝物たち=配列!作る。 宝物たち!(タートル!作る "tulip.png" 変身する ペンなし 100 100 位置)書く。 宝物たち!(タートル!作る "tulip.png" 変身する ペンなし 100 -100 位置)書く。 宝物たち!(タートル!作る "tulip.png" 変身する ペンなし -100 100 位置)書く。 かめた:衝突=「|相手| 相手!消える。宝物たち!(相手)消す。「(宝物たち!要素数?)<=0」!なら「ラベル!"クリア!"作る。時計!中断」実行」。