Scratch(スクラッチ)でおじさんドカーンゲームを作ろう!
プログラムの流れ(シーケンス)を細かく制御することができるやの使い方について詳しく解説します。
Scratch(スクラッチ):おじさんドカーンゲームの作り方
説明動画で作ったScratchプロジェクト
ゲームのやり方
タルの穴をクリック(タップ)してください。
6個の穴のうち、ハズレが1個あります。だれかと交互に、穴をクリック(タップ)して遊んでみてください。
※説明動画で使用する学習用Scratchプロジェクト「おじさんドカーンゲーム」は、https://scratch.mit.edu/projects/858725963/を利用してください。
おじさんドカーンゲーム:樽のスクリプト
のスクリプト
樽のスクリプト
- 旗をクリックしたら、
- 樽の座標がX=0、Y=-60になる。
おじさんドカーンゲーム:プレイヤーのスクリプト
のスクリプト
プレイヤーのスクリプト1
- 旗をクリックしたら、
- カスタムブロック「初期設定」を実行する。
プレイヤーのスクリプト2
- カスタムブロック「初期設定」が実行されると、
- プレイヤーの座標が、X=0、Y=90になり、大きさが60%になり、
- コスチュームを「コスチューム1」にして(髪の毛があるキャラクター)、
- 「ゲームスタート!」と吹き出し文字を2秒間表示してから、
※「(ゲームスタート!)と(2)秒言う」ブロックを実行中の2秒間は、本スクリプトの実行がストップする。つまり、「ゲームスタート!」と吹き出し文字を2秒間表示してから処理5-7が実行される。 - 変数「判定中」の値を「0」にセットし、
※判定中という変数をフラグとして使用している。変数「判定中」の値が「1」のときは判定中、「0」のときは判定中ではないとする。 - 変数「はずれ番号」に、「1~6」のいずれかの値を代入し、
※変数「はずれ番号」が「1」のときは、スプライト「穴1」がハズレ、「2」のときは「穴2」がハズレ、「3」のときは「穴3」がハズレ、「4」のときは「穴4」がハズレ、「5」のときは「穴5」がハズレ、「6」のときは「穴6」がハズレとする。 - 「ゲームスタート」というメッセージを送信する。
プレイヤーのスクリプト3
- メッセージ「ゲームオーバー」を受け取ったら、
- 処理3-6を10回繰り返して、
- コスチュームを「コスチューム2」にして(頭からカツラが飛び出しているコスチューム)、
- 0.1秒間だけ、本スクリプトの実行をストップして、
- コスチュームを「コスチューム3」にして(ハゲ頭だけのコスチューム)、
- 0.1秒間だけ、本スクリプトの実行をストップして、
- 終わるまで「Wobble」の音を鳴らして、
- 3秒間だけ、本スクリプトの実行をストップして、
- カスタムブロック「初期設定」を実行する。
※「初期設定」ブロックを実行することにより、おじさんドカーンゲームが再開される。つまり、メッセージ「ゲームオーバー」を受け取ると、プレイヤーのコスチュームが代わり「Wobble」の音が鳴った3秒後に、おじさんドカーンゲームが再開されるようになる。
おじさんドカーンゲーム:穴のスクリプト
のスクリプト
穴1のスクリプト1
- 旗をクリックしたら、
- 樽の座標がX=-80、Y=-10になる。
※他の穴のスプライトとは、このX座標とY座標の引数の値が異なるので注意。穴2の座標ははX=0 Y=-10、穴3はX=80 Y=-10、穴4はX=-80 Y=-110、穴5はX=0 Y=-110、穴6はX=80 Y=-110である。
穴1のスクリプト2
- 「ゲームオーバー」のメッセージを受け取ったら、
- スプライトの他のスクリプトを止める。
※を実行すると、同じスプライトの内で動作中の他のスクリプトを停止することができる。穴のスクリプトでは、「ゲームオーバー」のメッセージを受け取ったとき、プレイヤーが穴をまだクリックしていなければ、つぎに説明するスクリプト3が実行中であり、その実行中のスクリプトを停止することになる。「ゲームオーバー」のメッセージが送信されたら、ゲームが再開されるまで穴をクリックしても剣が刺さらないようにを実行してスクリプト3を停止させた。
穴1のスクリプト3
- 「ゲームスタート」メッセージを受け取ったら、
- コスチュームを「コスチューム1」にして(剣が刺さっていない状態のコスチューム)、
- 変数「判定中」が「0」で、マウスが押されたときに穴がマウスポインターに触れるまで本スクリプトの実行を一時停止して、
※このプログラミングブロックにより、「ゲームスタート」メッセージが送信された後に穴のスプライトをクリックすると、変数「判定中」の値が「0」なら(判定中でなければ)処理4以降の処理が実行される。
※「ずっと」ブロックと「もし< >なら」ブロックや、「このスプライトが押されたとき」ハットブロックを使用すると、変数などを利用して条件付をしないとゲーム中に何度でもクリックできてしまうのでを使用した。を使用すれば、穴を一度クリックした後は、穴をクリックしてもスクリプトは実行されなくなる。 - 変数「判定中」を「1」にセットして、
※このタイミングで変数「判定中」の値を「1」にすることにより、ある穴をクリックして穴がハズレか否かの判定を行っている最中に、他の穴をクリックしても他の穴の判定が実施されなくなる。 - 最前面へ移動して、「Rip]の音を鳴らし、
- 3回、コスチュームを次のコスチュームに変更し、
※穴のスプライトは、 の4つのコスチュームを持っており、穴のコスチュームがのときに3回次のコスチュームにすることにより、穴をクリックすると穴に剣が刺さるように見える。 - 終わるまで「Drumn Roll」の音を鳴らし、
※音ブロックにはとがあり、の場合は「Drumn Roll」の音が鳴り終わる前に次の処理8が実行される。の場合は「Drumn Roll」の音が鳴り終わってから次の処理8が実行される。 - もしも変数「はずれ番号」の値が「1」ならば、「Tada」という音が鳴り「ゲームオーバー」というメッセージが表示され、「はずれ番号」の値が「1」以外なら「Doorbell」の音を鳴らす。
※変数「はずれ番号」が「1」のときは、本スプライト穴1がハズレなので、「ゲームオーバー」というメッセージが送信されゲームオーバーの処理が実施される。
※他の穴のスプライトとは、<もしも変数「はずれ番号」の値が「1」ならば>の「1」の値が異なるので注意。穴2の場合は「2」、穴3は「3」、穴4は「4」、穴5は「5」、穴6は「6」である。 - 変数「判定中」の値を「0」に戻す。
※変数「判定中」の値を「0」に戻すことにより、他の穴のスクリプトにおける処理3の条件の一つである真偽条件<もしも変数「判定中」が「0」なら>がTrue(真)となり、他の穴をクリックするとハズレ判定の処理が開始されるようになる。逆に言うと、本スクリプトの処理4-8が実行中は、他の穴のスクリプトをクリックしてもハズレ判定の処理は実行されなくなる。
おじさんドカーンゲーム:ステージ(背景)のスクリプト
のスクリプト
樽のスクリプト
- 旗をクリックしたら、
- 背景の画像効果をなくす。
樽のスクリプト
- メッセージ「ゲームオーバー」を受け取ったら、
- 「色の効果を25ずつ変える」ブロックを100回繰り返し、
- 画像効果をなくす。
止めるブロックの解説
止めるブロックは、スクリプトの動きを止めるためのブロックです。これらのブロックを使うと、プログラムの動き(シーケンス)を細かく制御することができます。
Scratchプロジェクトの中で動いているすべてのスクリプトを止めます。すべてのスプライトや音楽、動き、すべてが止まります。
このブロックが含まれているスクリプトだけを止めます。他のスクリプトやスプライトの動きは止まりません。
同じスプライトの中で動いている他のスクリプトを止めます。このブロックが含まれているスクリプトは止まらず、他のスプライトも影響を受けません。
Scratch3.0(スクラッチ3.0)とは?
MITメディアラボにより開発されたビジュアルプログラミング言語。子供たちが物語やゲーム、 アニメーションなどのインタラクティブな作品をプログラミングできる。また、自分の作った作品を世界中の人々と共有できるコミュニティーサイトでもある。世界中で9千万人を超えるユーザがいる。
こちらのホームページにアクセスすれば無料で利用できる。