スクラッチ scratch

【スクラッチ】時間が経つと敵が増えて難しくしたい、というリクエストを叶えるために

ニンジャ
点数が増えたら敵を増やして、難しくしたいんです。

子ども向け無料プログラミング体験場『CoderDojo熊本』で頂いたリクエスト。

アオキ
確かに、ずっと同じじゃおもしろくないもんね、
アオキ
時間が経つほどに敵を増やす方法か・・

例えばテトリスなら、時間が経つほどにブロックの落ちるスピードが早くなるし、

インベーダーなら敵の動きが早くなるし、

シューティングゲームなら敵の数や弾の数が増えていくし。

時間なりスコアなりが増えていくほど難しくする、というリクエストはあるよなぁと。

『CoderDojo熊本』に参加されていたメンターさんにも相談しつつ、

  • 変数を使う
  • 割り算を使う
  • 繰り上げ/繰り下げを使う

などを組み合わせて実現できたので、記事に残しておくことにしました。

Sponsored link

スクラッチで時間が経つほど敵を増やす方法 はじめの一歩

例えば、

  • 1秒ごとに1点ずつ点数が増えて、
  • 10秒になったら敵が1匹増えて、
  • 20秒になったらまた敵が1匹増えて・・・

というケースで考えてみるに、

  • 1秒ごとに1点ずつ点数が増えるという変数
  • 敵の数を数えるための変数

最低2つの変数は必要なのかなと思います。

2つの変数を使いつつ、メンターの方とも相談し、いくつかの方法を考えてみました。

スクラッチで時間が経つほど敵を増やす方法その1 〜より大きい 〜より小さい

1つ目の方法はわかりやすさ重視の作り方です。

scoreという変数と、
rank という変数があったとして、

scoreが9秒より多く、 19未満なら rankを1にして。
scoreが19秒より多く、29未満なら rankを2にして。

という形で組んでいけば、
10秒ごとにrankが1つずつ増えていくなと。

わかりやすいといえばわかりやすいけれど、

アオキ
例えば100秒とか200秒まで数えていくとしたら、
アオキ
その分行数が増えていくので大変になっちゃうよなぁ

とも思ったり。

Sponsored link

スクラッチで時間が経つほど敵を増やす方法その2 割り算・繰り下げ

2つ目は割り算を使った方法。

10秒ごとに敵が増えるので、

秒数を10で割ったらいいんじゃないかという発想です。

例えば、

  • 10秒 割る 10 = 1 あまり 0
  • 11秒 割る 10 = 1 あまり 1
  • 15秒 割る 10 = 1 あまり 5
  • 21秒 割る 10 = 2 あまり 0

といった具合ですね。

アオキ
割り算した時の答えを『商(しょう)』といいますね、懐かしい・・
アオキ
割り算した時の答え『商(しょう)』を変数にすればいいのかな?

と思い、子ども向け無料プログラミング体験場『CoderDojo熊本』開催中にいろいろやってみるもなかなかうまくいかず。

メンター岩元さん
割り算すると小数になりますね・・繰り下げがあるといいんだけど・・

どうやら『スクラッチ』の仕様か、

単純に割っただけだと『商(しょう}』が小数点になってしまうしょう。

『CoderDojo熊本』終了後、家に帰ってカレーを食べていたらFacebookメッセージが。

メンター岩元さん
帰ってきて確認したら、切り下げがありました・・・割って切り下げるが正解でした。

アオキ
さすがはプロプログラマーのメンター岩元さん、ありがたやありがたや。

というわけで、割り算パターンがこちら。

10で割って、『商(しょう)』の小数点を切り下げて、

  • 『商(しょう)』が1ならrankを1に、
  • 『商(しょう)』が2ならrankを2に、
アオキ
うーん、これでも200秒とかなら行数増えちゃうよね・・

と思い、『CoderDojo熊本』メンター専用Facebookグループにて相談してみることに。

スクラッチで時間が経つほど敵を増やす方法その3 割り算・繰り上げ

しばらくしてメンター岩元さんより連絡きまして。

メンター岩元さん
私も、作ってみました。
メンター岩元さん
いろいろ調整してみたら、切り下げでなく切り上げの方が読みやすくなりました。
メンター岩元さん
カウンタの代わりにタイマーを使うとうまく動作しない事も考慮して、
メンター岩元さん
等号でなく不等号で判定するようにしました。
メンター岩元さん
この書き方であれば複数のタイミングを持つループも書けるはずです。
メンター岩元さん
それでも理解が難しい式なので、出来ればもう少し改善したいです。

そのコードがこちら。

な、なるほど・・すごいっ!

実際に動くコードがこちら。

ねこ分身

変数を2つ用意するというのは変わらず、

  • カウント・・秒数
  • ねこの数・・その名の通りねこの数

ねこの数 < カウント / 10 の切り上げ

という条件式を使ってうまく実現されていました。

アオキ
これなら200秒でも300秒でも短いコード量ですみますね!
アオキ
僕一人ではここまで考えられなかったかも。。ありがたやありがたや。

スクラッチで時間が経つほど敵を増やす方法その4 割り算で1未満とする

2019/3/17 追記です。

この記事を書いてから約1ヶ月後、CoderDojo熊本メンターの方より別案をいただきました。

メンター渡邊さん
今更ではありますが、「((カウント)を(10)で割った余り)=0」ならクローンを作る、が小学生にもわかりやすいかな〜と。(=0がうまく動作しない場合は、1未満とするか、少数以下切り下げか)

さっそく試してみると、 <1 であっさり動きました。

アオキ
これが一番わかりやすいかも・・!
Sponsored link

おまけ スクラッチで時間が経つほどキャラを大きくする

おまけですが、

以前見つけた『Rimmed』という弾を避けるシューティングゲームでは、

時間が経つにつれて自分自身が大きくなるという方法をとっていました。

自分自身が大きくなるというコードはこちら。

scoreという変数を使いつつ、割り算でちょっとずつ大きくしているんですね。

変数が一つならこの形でいいんだろうなぁと。

アオキ
いやぁ、なかなか頭使うわぁ〜

Rimmed

スクラッチで時間が経つほど敵を増やす方法を考えてみて

ニンジャ
点数が増えたら敵を増やして、難しくしたいんです。

という要望をうけ、考えてみると、

  • 2つの変数
  • 割り算
  • 繰り上げ/繰り下げ

なんてことをうまく組み合わせてつくるという過程が、
簡単なようで最初はなかなか思いつかず、
とてもいい頭の体操になったなと思います。

答えは一つとは限らないので、たくさんの方法をいろいろと試していけたらなぁと。

これからも子ども向け無料プログラミング体験場『CoderDojo熊本』では、

たくさんの要望が出てくると思うので、

僕たちメンターとしても、しっかりと引き出しを増やして、どんな要望にも応えられるようにししたいなと思います。

アオキ
『CoderDojo熊本』参加者どしどし募集中です、お気軽に起こしくださいませ〜

CoderDojo熊本 参加者募集中!

created by Rinker
¥2,030 (2019/07/17 16:01:18時点 Amazon調べ-詳細)
created by Rinker
¥2,376 (2019/07/17 18:36:31時点 Amazon調べ-詳細)

『スクラッチ』ではこんな記事も読まれています。

1. 【スクラッチ】ジャンプをする方法〜3ステップでジャンプできるようになる〜

2. 【スクラッチ】角度や回転を使う方法【動画】【初心者向け】

3. 『スクラッチ』で花火をつくる方法【動画あり】【初心者向け】

4. 【スクラッチ】シューティングで敵の弾をつくる方法【画像たっぷり】

5. スクラッチでセーブする方法を考えてみる〜基本的な考え方〜

6. スクラッチプログラミングでマリオ風の横スクロールアクションゲームを参考にいいとこ取りしてみる

7. スクラッチ(scratch)とマインクラフト(minecraft)を連携させて子ども向けプログラミングのネタを増やしてみた

8. 【スクラッチ】時間が経つと敵が増えて難しくしたい、というリクエストを叶えるために

9. プログラミングと三角関数〜小学生でもすんなりわかる三角関数を目指して

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


関連記事

  1. スクラッチ scratch

    【スクラッチ】角度や回転を使う方法【動画】【初心者向け】

    ブロックを組み立てるようにプログラミングができる『スクラッチ』。ス…

  2. CoderDojo

    【とにかくオススメ】子どものプログラム練習にマインクラフトがオススメな4つの理由

    子ども向け無料プログラミング道場『CoderDojo熊本』を立ち上げて…

  3. Python

    スクラッチ(scratch)とマインクラフト(minecraft)を連携させて子ども向けプログラミン…

    CoderDojo熊本を立ち上げてからというもの、日々お勉強の毎日にな…

  4. スクラッチ scratch

    【スクラッチ】ジャンプをする方法〜3ステップでジャンプできるようになる〜

    子ども向け無料プログラミング寺子屋『CoderDojo熊本』開催中…

  5. スクラッチ scratch

    micro:bit(マイクロビット)とスクラッチをつなげてHelloとやってみた

    ここ数年、子供向けプログラミング教材の種類が世界的に増えてきています。…

Sponsored link

最近の記事

  1. Laravel

    【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【t…
  2. プログラミング

    『プログラミング教育』より大事な事を考えてみる~AI時代を見据えて~
  3. P5.js (Processing)

    【P5.js】遊ぶようにプログラミングできるクリエイティブコーディング〜はじめの…
  4. リベラルアーツ

    『ニュータイプの時代』〜リベラルアーツとテクノロジーの融合〜
  5. 数学

    【微分】わかりやすくプログラミング目線で整理してみる【初心者向け】
PAGE TOP