
スプライトを空に飛ばしながら自由に操作できるようにはできましたか?
まだできていない人はしたの記事をみてからぜひ作ってみましょう!↓
ここまでできると何かゲームが作れそうですね。
横から何か流れてきたものを飛んでいる鳥がゲットするなどができると面白そうです。
今回の記事ではいろんなものを流してゲットしたら得点を加算していくゲームを作ってみましょう。
目次
飛んでいる鳥がゲットするものを追加してみよう
ゲットするものとしてりんごを追加してみましょう。
スプライトを追加するには『スプライト』エリアの右下にある追加ボタンをクリックして追加しましょう。
クリック後『apple』と入力して検索すれば表示されます。
りんごを右から左へと動かしてみる
りんごを追加したら今度は右から左へと動かしてみましょう。
りんごを動かすには 『move』命令を使いましょう。
値は-10にして右から左へと動いていくようにしましょう。
左に動いていますね、あとは『Buildings』スプライトと同じやり方で右から左に自動で動くようにしてみましょう。
使う命令は以下です。
- loop
- self.x = 300
- until x < -250
上記の命令を組み合わせてプログラムを作りましょう。
self.when(:flag_clicked) do loop do self.x = 300 until x < -250 move(-10) end next_costume end end
動かすと以下のように動かすことができます。
追加しものに触れたらスコアをつけてみよう
りんごを追加することができたので次はりんごに触れたらスコアを加算するようにしてみましょう!
まずはスコアを表示するために変数を作成しましょう。
変数について詳しく知りたい人はしたの記事をみてください!↓
スコア変数を追加する
名前は『score』ですべてのスプライト用として作成しましょう。
『$score』を追加します。
りんごに触れたらスコアの値を変更する
スコアという変数を作成しましたがどんなときにスコアの値を増やしたいでしょうか?
そうですね飛んでいる鳥がりんごに触れたときにスコアを増やしたいですね。
さっそく『Apple』スプライトを選択してプログラムを修正しましょう。
増やしたいのは鳥がりんごにさわったらでしたね。
こんなとき使うのは分岐でしたね。
分岐といえば『if 〇〇 〜 end』命令が使えそうです。
〇〇の中はどうしたら良いでしょうか?
『鳥に触れたら』としたいので『touching?』命令が使えそうです。
飛んでいる鳥がりんごに触れたときには何をしたいのでしたっけ?
そうですねスコアの値を増やしたかったのです。
『もしToucanに触れたらscoreを1づつ変える』というプログラムを作成すると良さそうです。
self.when(:flag_clicked) do loop do self.x = 300 until x < -250 move(-10) if touching?("Toucan") $score += 1 end end end end
実際に動かしてみてりんごに触るとスコアの値が増えていくか試してみましょう!
スコアは増えていますけどなんか増えすぎですね。
なぜでしょうか?
りんごにふれたら画面から隠してみよう
スコアがたくさん増えていくのは条件が『鳥に触れたら』になっているからですね。
鳥をりんごが飛んでいるところに移動させた後に鳥はしばらくりんごに触れつづけていますよね。
なのでプログラムは正常に動いているわけです。
ただりんごにふれたら1点だけ追加したいのですがどうすれば良いでしょうか?
りんごに触れたらりんごを隠してみるといいかもしれませんね。
『if touching?("Toucan")』命令の中の一番最初には『隠す』命令を追加してみましょう!
if touching?("Toucan") hide $score += 1 end
追加したら動かしてみましょう。
スコアは1点だけが加算されるようになりましたがりんごが消えてしましましたね。
これは隠した後に表示をしていないからです、表示する命令を追加しましょう。
表示するのは『show』を使います、
self.when(:flag_clicked) do loop do self.x = 300 show until x < -250 move(-10) if touching?("Toucan") hide $score += 1 end end end end
ブロックを上記のように追加したら動かしてみましょう!
いいですね! イメージしていた動きになりましたね。
りんごに触れたときに音を出してみよう
りんごに触れたときにしっかりと触れたことがわかるように音を出してみましょう!
音を鳴らすには 『play』命令を使います。
ToucanはChompという音を持っていますので『play("Chomp")』を追加しましょう。
self.when(:flag_clicked) do loop do self.x = 300 show until x < -250 move(-10) if touching?("Toucan") hide play("Chomp") $score += 1 end end end end
追加したら動かしてみましょう!
りんごに触れるとまるで鳥がりんごを食べたような音が出て面白いですね。
りんごをいろんなところから出しみよう
りんごに触ることでスコアが増えていくようになりましたがりんご出てくる位置が変わらないのでゲームとしては簡単すぎますね。
もう少しゲーム性を持たせるためにりんごの出てくる位置を毎回変えてみましょう!
y座標はいくつからいくつまで設定できるか?
りんごの出てくる位置を変えるためにはy座標の値を変えると良さそうです。
y座標はいくつからいくつまで設定できるのでしょうか?
実際にりんごを動かして値を確認してみましょう!
-130から130ぐらいに表示させると触れることができて良さそうですね。
y座標を変更するために乱数を使ってみよう
りんごのy座標に設定したい値は-130から130だということがわかりました。
ではどうやって-130から130の値を作れば良いでしょうか?
スモウルビーの命令には『乱数』と呼ばれるものが用意されいます。
乱数とは決められた範囲の数値を適当に取り出してくれる便利なものです。
今回のような場合にはぴったりですね。
乱数を使える『rand』命令を使い-130と130を取得できるようにしましょう。
『rand』命令はどこに使えば良いでしょうか?
y座標を変更できるような命令はまだプログラムの中にはなさそうです。
現在X座標の位置を変更している『self.x = 300』の代わりに『go_to』命令を使いましょう。
入れ替えたあとはx座標の値を300にy座標の値を先ほどの『rand』命令にしてみましょう。
self.when(:flag_clicked) do loop do go_to([300, rand(-130..130)]) show until x < -250 move(-10) if touching?("Toucan") hide play("Chomp") $score += 1 end end end end
上記のようなプログラムが作成できたら動かしてみましょう!
いいですね、りんごが出てくる位置が変わったのでゲームっぽくなってきましたね!
今回はここまでにしておきましょう、お疲れ様でした!