できるがな(2)-1
もどる すすむもどる                  すすむ

「できるな」

早押しゲームを作ろう!(1)
さぁ、いよいよゲームを作ることになりましたね。なんだかわくわくしますね。

では比較的簡単に出来る「早押しゲーム」を作ってみましょう。画面の中をうろうろするボタンを時間内に何回叩くことができるかを競うゲームです。

今回用意するモノはなんですか?

なんと、何もいりません。Directorだけで作ってしまいます。しかも容量を10K以下に押さえてみせます!!

おお、それは素晴らしい。……でも本当にできるのですか?

ま、それはいいとして、実際に作ってみましょう。まずはDirectorを起動して、ステージサイズを320*320に設定して下さい。

はい、できましたよ。それでどうすればいいのですか?

では標的となるボタンをつくりましょう。ボタン……といってもシェイプキャストで四角形を描くだけなんですけどね。このシェイプを利用すると……

ちょっと待って、それは私に言わせて「シェイプキャストを使用するとどんなに大きなサイズでも58バイトで済むんですよ。たったの58バイトですよ。すごいでしょ。」ってね。

……ううむ、図星ですね……。ま、それはそれとして、今はキャストが一つ、スコア上には何もないという状態になっていますね。では今からボタンが動き回るスクリプトを書いてみましょう。稟さん、こういう場合、つまりスコアの制御ではなく、スクリプトによって絵を動かすときにはどうすればいいのでしたっけ?

ふっふっふ、そう質問すると思って予習しておきましたよ。初級編の「パペット使いへの道」をちゃんとマスターしておきましたから。そう、ここではパペットスプライトを使うんでしたね。

その通り!どうしたんですか稟さん。今日はえらく冴えていますね。そう、ここはパペットスプライトを使うんですよ。で、どのように動かすかを考えなければなりません。ここいらからちょっとややこしくなるので、がんばって下さいね。ではボタンの動かし方を以下のように設定することにしましょう。


座標位置の設定

上の図のように16のマスをあちこち移動するように設定しましょうか。それでこれをクリックすると得点が加算されるようにしましょう。

ううむ、スプライトの座標はthe locH of sprite ..とかで設定するのですが、この座標をどうやって出しましょうか?あ、そうか、サイコロを振るのと同じ考えなんですね。ひょっとしてrandom関数を使うんでしょうか?

そうですね、ここではrandom関数を使うことにしましょう。(randomについてはこちらで詳しく解説していましたよね)たとえばヨコの位置ですが、四角形の左端の座標は45、105、165、225という数値をとっています。これは以下のような関数で表すことができますね。

左端の座標=60X+45 (0<=X<=3)
同様に上端の座標は以下のように表すことができます。
上端の座標=60X+50(0<=X<=3)
わかりますか?決して左端の座標=50X+45ではないんですよ。なぜなら余白の部分で計算がおかしくなってしまうのです。

ううむ、難しいけれど、言われてみれば「ふぅんそうなんだ」という感じですね。ではこれをLingoで変換すると

set the locH of sprite ? to 60*random(3)+45
ってなるんですか?

おしい!random(3)は1から3の値をとるんですよ。この場合は0から3の値をとりたいので、random(3)ではなく、random(4)-1と書きます。では全体はどうなりますか?稟さん?

あ、そうか。よし、書き直してみるとこうなりますね。

set the locH of sprite ? to 60*(random(4)-1)+45
set the locV of sprite ? to 60*(random(4)-1)+50
となりますね。豪さん、ついでにこれをハンドラとして定義しておきません?

それは良い考えですね。ハンドラとして定義しておくと、使い回しが利きますからね。では以下のように書いておきましょう

on move spNum
 set the locH of sprite spNum to 60*(random(4)-1)+45
 set the locV of sprite spNum to 60*(random(4)-1)+50
 updatestage
end
ではこのスクリプトを新規スクリプトにコピーしておいて下さい。ではあとはスコアに役者を配置しましょう。では稟さん、チャンネル10にシェイプキャストをおいて下さい。その後でそれをドラッグしてステージ外に持っていって下さいね。

え?なんでチャンネル10なの?それに何故ステージ外に持っていくの?

まずチャンネルの話ですが、チャンネル1から10までは予備の為に空けてあるんですよ。この後でたとえば背景をつけたくなったり、色々なモノを置こうと思ったときに便利でしょ。次に何故ステージ外に持っていく必要があるのかということですけど、パペット宣言(puppetSprite チャンネル名,TRUE)を受けた後でスプライトは見えなくなる(パペットになる)のですが、それが実行されるまでに若干の間があります。その間見苦しくなるのを避けるためにステージ外に配置しておきます。

はい、なんとなくわかりました。では早速やってみますね。

つぎにゆく


© Akira SAno 1996.1997
All rights reserved.
homeできるなメニューにもどる