初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Scratchで はじめようゲームプログラミング

13.「玉をやり過ごす」を作ろう④完

 

[ 「玉をやり過ごす」を作ろう③ ] の続きです。

 

Scratch では他の人の作品のプログラムを見ることができます。
リミックスして自分なりの改造ができれば最高ですが、中を見るだけでもいい勉強になります。
ただ他の人のプログラムって理解がむずかしいです。私が見ても分からないものもあります。
それでも「この作品はおもしろい。どうやって作っているんだろう」と思ったらぜひ中を見てください。初めは分からなくても段々と分かるようになります。

 

 

評価メッセージを表示しよう

この課題もこのページで最後です。あと少し頑張りましょう。

前のページでゲームが終わったとき終了を送るを用意しました。
このメッセージを受け取る処理を作ります。
プログラムは評価メッセージを描いたスプライトに作っていきます。

 

イベントからメッセージ1を受け取ったときを持ってきます。
メッセージ1を 終了 に変更します。

終了メッセージを受け取ったときを作る

 

スコアによってメッセージを変えたいので条件分岐を使います。

制御からもし〜なら、でなければを持ってきます。
演算から○=50を持ってきます。

比較演算子を使って条件分岐を行う

 

最高スコアは 200 点です。まずこれを判断します。

変数からスコアを持ってきます。
このスコアが 200 と等しいか調べます。

スコアが200かどうか調べる

 

見た目からコスチュームを〜にするを持ってきます。
コスチュームを 最高 に変更します。

コスチュームを最高にする

 

最高・いいね・がんばって、この3つの評価をしたいので条件分岐をもう一つ追加します。

制御からもし〜なら、でなければを持ってきてでなければ の中に入れます。

条件分岐をでなければの中に入れる

 

演算から○>50を持ってきます。
変数スコアはコピーして左辺に入れ、右辺を 140 にします。
これでスコアが 140 点よりも大きいか判断できます。

スコアが140より大きいか判断する

 

見た目からコスチュームを〜にするを2つ持ってきます。
スコアが 140 より上のときと、それ以外のときの中に入れます。
そして いいねがんばって に変更します。

スコアが140より上ならいいね、それ以外はがんばってに変える

これでスコアが 200 なら「最高」140 より上なら「いいね」それ以外は「がんばって」が表示されます。

 

最後にこのスプライトを表示します。
見た目から表示するを持ってきます。

評価メッセージを表示する

 

 

評価メッセージのバグを修正しよう

「最高」「いいね」「がんばって」が表示されるかテストしましょう。
ゲーム制作で重要なのはテストです。これができない人は本当にへっぽこプログラマーです。

まずは「最高」を表示させるためミスせずにゲームをクリアしてみます。
おっと、ミス無しでも「いいね」が表示されました。いきなりバグ発見です。

ミス無しでもいいねが表示される

 

調べてみると「終了」メッセージの発生タイミングに原因がありました。

終了メッセージは 20 個の玉を発生させた直後に送信しています。
評価メッセージは終了メッセージを受信したときに行っています。
つまり、20 個の玉を避けたかまだ分からないのに判断していることになります。

このバグは終了メッセージの前に待ちを入れて解決したいと思います。

 

制御から1秒待つを持ってきます。
終了を送るの前に入れて 2秒待つ に変更します。

終了を送る前に2秒待つ

 

テストしましょう。
スコア 200 で「最高」、190〜150 で「いいね」、それ以外は「がんばって」と表示されるかテストします。

評価メッセージのテストを行う

《 注意 》
バグの対処法として待ちを使いました。
でも実はあまり良い方法ではありません。
何かの理由で玉の移動速度を遅くしたら、またこのバグが発生します。

安全な対処法は「発生した玉の数と廃棄した玉の数が同じとき終了を送る」です。
仕組みがむずかしくなるため今回は使いませんでした。

 

 

調整しよう

ゲームはほぼ完成しました。
完成後はプレイ中の違和感を探します

私は遊んでみて初めに思ったことが「実行後にすぐ玉が落ちてきて余裕がない」でした。
ですので余裕を入れたいと思います。

 

玉のスプライトの中に待ちを追加します。
制御から1秒待つを持ってきます。

玉の発生まで1秒待つ

プログラムの実行から玉の発生まで1秒待つことになります。
ここで長い時間待たせるとプレイヤーが不安になるので長すぎてもダメです。注意しましょう。

 

 

壁を動かす音を入れよう

ゲームに音を入れるとグッと良くなります。
私の苦手な分野ですが挑戦してみましょう。

まず壁を動かす音を入れます。
壁のスプライトを選択し、のタブをクリックします。

壁のスプライトを選択する

 

新しく音を追加します。
ちなみに「ポップ」という音はこのスプライトを作った時から入っています。
これは使いません。

新しく音を追加する

 

音を選ぶページが表示されたら high で検索します。
High Whoosh をクリックします。

High Whooshを選ぶ

 

「ポップ」の下に「High Whoosh」という音が追加されました。
この音をプログラムで使ってみましょう。コードのタブをクリックします。

コードエディタに戻る

 

から○の音を鳴らすを持ってきて メッセージ1を受け取ったときの下に入れます。
そして High Whoosh の音を鳴らすように設定します。
これで壁を動かすタイミングで音が鳴ります。

壁を動かすとき音を鳴らす

 

 

玉の音を入れよう

次は玉の音を入れます。
壁は左右に動かすときの音を入れました。
玉は壁に当たってしまったときと、上手くすり抜けたときの2つの音を入れます。

Ball のスプライトを選ぶます。

玉のスプライトを選ぶ

 

新しく音を追加します。
ちなみに「Boing」と「Pop」は Ball のスプライトを作った時から入っています。
選んだ絵によって用意される音が違うようです。

新しく音を追加する

 

音を選ぶページが表示されたら low で検索します。
Low Boing をクリックします。

Low Boingを選ぶ

 

音エディタのページに戻ったら、もう一度新しく音を追加します。
音を選ぶページが表示されたら suc で検索します。
Suction Cup をクリックします。

Suction Cupを選ぶ

 

「Low Boing」と「Suction Cup」を追加しました。
コード のタブをクリックしてプログラミングに戻りましょう。

プログラミングに戻る

 

から○の音を鳴らすを持ってきて下図のところに入れます。
壁との当たり判定の中に Low Boing を設定し、
玉の移動後、つまり、すり抜けた後に Suction Cup を設定します。

壁に当たった音とすり抜け後の音を入れる

テストして音を聞いてみてください。
これまでに入れた3つの音は私が勝手に選んだものです。ゲームの効果音に正解はありません。気に入った音を入れて楽しみましょう。
ただし、映像(スプライトの絵の動き)とかけ離れた効果音を入れるとプレイヤーが混乱します。注意しましょう。

 

 

ゲームクリアの音を入れよう

ゲームクリア後の音も欲しいですね。
評価メッセージを表示するタイミングで音を鳴らしてみます。

評価メッセージのスプライトを選択します。
あれ、スプライトの名前を変更してなかったですね。できるだけ何のスプライトなのか分かるような名前を付けましょう。

評価メッセージのスプライトを選択する

 

のタブをクリックしたら、新しく音を追加します。

新しく音を追加する

 

勝った時と負けた時の音を用意します。

音を選ぶページが表示されたら win で検索します。
Win をクリックします。

winの音を選択する

 

2つ目は lose で検索します。
Lose をクリックします。

loseの音を選択する

 

「Win」と「Lose」を追加しました。
コード のタブをクリックしてプログラミングに戻りましょう。

コードをクリックしプログラミングに戻る

 

から○の音を鳴らすを持ってきて下図のところに入れます。
「最高」と「いいね」のときは Win を設定し、
「がんばって」のときは Lose を設定します。

最高といいねでwinそれ以外はloseを鳴らす

テストしましょう。
ゲームクリアの音が入ると何となくゲームした感が強くなりますね。

 

 

完成しました

これで完成です。お疲れさまでした。

当講座で初めて絵を描いてみたのですが、ツールの使い方の説明が多くて大変でしたね。 説明できていない部分もあると思うので、色々と試してツールに慣れてください。
ツールの使い方をしっかり学びたい人はネットで検索してみてください。
いくつか見つかると思います。

玉を避けるという案はいろいろな方法があると思います。
自分なりに考えた面構成で作ってみてはどうでしょうか。

 

最後にスプライトとステージのコードを載せておきます。

壁のコード ballのコード 評価メッセージのコード ステージのコード