スモウルビー-りんごをランダムに表示する

スプライトを空に飛ばしながら自由に操作できるようにはできましたか?

まだできていない人はしたの記事をみてからぜひ作ってみましょう!↓

ここまでできると何かゲームが作れそうですね。

横から何か流れてきたものを飛んでいる鳥がゲットするなどができると面白そうです。

今回の記事ではいろんなものを流してゲットしたら得点を加算していくゲームを作ってみましょう。

飛んでいる鳥がゲットするものを追加してみよう

ゲットするものとしてりんごを追加してみましょう。

スプライトを追加するには『スプライト』エリアの右下にある追加ボタンをクリックして追加しましょう。

クリック後『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

ブロックを上記のように追加したら動かしてみましょう!

スモウルビー-スコアが1点づつ

いいですね! イメージしていた動きになりましたね。

りんごに触れたときに音を出してみよう

りんごに触れたときにしっかりと触れたことがわかるように音を出してみましょう!

音を鳴らすには 『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

上記のようなプログラムが作成できたら動かしてみましょう!

スモウルビー-りんごをランダムに表示する

いいですね、りんごが出てくる位置が変わったのでゲームっぽくなってきましたね!

今回はここまでにしておきましょう、お疲れ様でした!

おすすめの記事