スクラッチプログラミング - けしゴムおとしゲーム|モバイル対応(たいおう)

マウスやタッチでけしゴムをひっぱってとばす「けしゴムおとし」を Scratch でつくります。キーボードをつかわずにけしゴムをうごかすので、タブレットなどでもあそぶことができるゲームです。

スクラッチプログラミング - けしゴムおとしゲーム|モバイル対応(たいおう)

けしゴムをひっぱってとばそう

この記事(きじ)では、 Scratch (スクラッチ)でけしゴムおとしゲームをつくる方法(ほうほう)を紹介(しょうかい)します。

けしゴムおとしは、机(つくえ)の上(うえ)にあるけしゴムをとばして、相手(あいて)のけしゴムを机(つくえ)からおとすゲームです。けしゴムは、マウスまたはタッチでうごかします。パソコンだけでなく、キーボードなしのタブレットでも簡単(かんたん)に操作(そうさ)できるゲームなので、ぜひ一緒(いっしょ)につくってみましょう。

サンプルプロジェクト

下(した)にあるのは、けしゴムおとしのサンプルプロジェクトです。記事(きじ)をよみすすめる前(まえ)に、けしゴムのうごきをみておいてください。

  • ユーザーがうごかせるのは、青(あお)けしゴム
  • 赤(あか)けしゴムは、自動(じどう)でうごく
  • 机(つくえ)からおちたら、ゲーム終了(しゅうりょう)
Scratch|けしゴムおとしのサンプルGIF
Scratch|けしゴムおとしのサンプルGIF

けしゴムのスプライトを用意(ようい)しよう

最初(さいしょ)に、けしゴムのスプライトを2つ用意(ようい)します。おたがいにむかいあうようにえがいてください。

  • 青(あお)けしゴム:左側(ひだりがわ)に配置(はいち)するので、右(みぎ)むきです。
  • 赤(あか)けしゴム:右側(みぎがわ)に配置(はいち)するので、左(ひだり)むきです。
けしゴムのスプライト2つ
けしゴムのスプライト2つ

ゲームの舞台(ぶたい)となる机(つくえ)は、スプライトまたは背景(はいけい)でつくっておいてください。

最初(さいしょ)の設定(せってい)

ここからは、青(あお)けしゴムのスプライトを選択(せんたく)して、ブロックをつなげていきます。

まずは、ゲームにつかう変数(へんすう)を用意(ようい)して、最初(さいしょ)の値(あたい)を設定(せってい)しましょう。

  1. ゲーム中(ちゅう)?:ゲームの最中(さいちゅう)か、ゲームが終了(しゅうりょう)したかを管理(かんり)する変数(へんすう)です。はい にして、ゲームをはじめられるようにします。
  2. 順番(じゅんばん):どちらのターンかを指示(しじ)する変数(へんすう)です。青(あお) にして、青(あお)けしゴムからうごかせるようにします。
  3. 青(あお)のうごく量(りょう):青(あお)けしゴムがどれだけうごくかをきめる変数(へんすう)です。最初(さいしょ)は 0 です。
へんすうを3つつくって、しょきかする
へんすうを3つつくって、しょきかする

つづけて、青(あお)けしゴムをうごかしはじめる前(まえ)の、最初(さいしょ)の状態(じょうたい)を設定(せってい)しましょう。

  1. おおきさ:まけたときにサイズをちいさくするので、最初(さいしょ)は 100 にしておきます。
  2. 座標(ざひょう):ランダムにして、毎回(まいかい)ちがう位置(いち)からはじまるようにします。
  3. むき:うごくときに回転(かいてん)しながらむきがかわるので、最初(さいしょ)は相手(あいて)のほうをむくように 90 にしておきます。
  4. メッセージをおくる:青(あお)のターンからはじまるようにします。
うごかすまえのせってい
うごかすまえのせってい

ここまでで、青(あお)けしゴムをうごかす準備(じゅんび)ができました。

青(あお)けしゴムをうごかそう

青(あお)けしゴムをうごかせるのは、メッセージをうけとったときです。青(あお)のばん をうけとったとき の下(した)にブロックをつなげていきましょう。

うごく量(りょう)をきめる

けしゴムをうごかす前(まえ)に、どれだけうごくかをきめます。

  1. けしゴムが、マウスまたは指(ゆび)でおされるのをまちます。
  2. 青(あお)のうごく量(りょう) は、マウスをおしている間(あいだ)、けしゴムとマウスの位置(いち)から計算(けいさん)します。
  3. うごく量(りょう)がおおきくなりすぎないように、最大値(さいだいち)をきめておきます。
マウスポインターまたはタッチでうごくようにする
マウスポインターまたはタッチでうごくようにする

青(あお)のうごく量(りょう) にはいる値(あたい)は、かならず四捨五入(ししゃごにゅう)して整数(せいすう)になるようにしてください。理由(りゆう)は、もし変数(へんすう)の値(あたい)が小数(しょうすう)だと、この後(あと)追加(ついか)する「青(あお)のうごく量(りょう)0 になるまで青(あお)けしゴムうごかす」というブロックがきかなくなってしまうからです。

また、うごく量(りょう)の最大値(さいだいち)をきめておかないと、青(あお)けしゴムがつよくなりすぎてしまうので、適当(てきとう)な値(あたい)を設定(せってい)しておいてください。

うごく方向(ほうこう)をきめる

つづいて、マウスまたは指(ゆび)がはなされたら、けしゴムをうごかします。うごかしはじめる前(まえ)に、むきをきめて、そのむきを変数(へんすう)に保存(ほぞん)しておきましょう。

  1. むきを、マウスのほうにします。
  2. むきを 青(あお)の角度(かくど) に保存(ほぞん)します。
うごかすほうこうをきめる
うごかすほうこうをきめる

今回(こんかい)つくっていくスクリプトでは、このように、うごく方向(ほうこう)を変数(へんすう)に保存(ほぞん)しておくことが重要(じゅうよう)です。なぜかというと、けしゴムをうごかすために、sin サイン・cos コサインのブロックをつかっていくからです。

  • 「sin サイン・cos コサインなんて、むずかしそう …。」
  • 「マウスでむきをきめたなら、その方向(ほうこう)へ ◯ ほうごかす でうごかせばいいんじゃないの?」

そんなふうにおもう方(かた)もいるかもしれませんね。ただ今回(こんかい)は、けしゴムを回転(かいてん)させながらうごかすので、うごいている間(あいだ)はずっとむきが変化(へんか)します。そのため、 ◯ ほうごかす ではまっすぐうごかすことができません。

sin サイン・cos コサインをつかってうごかす理由(りゆう)は、途中(とちゅう)でむきがかわっても、まっすぐすすむようにするためです。

  • sin サイン・cos コサインでは、最初(さいしょ)のむきをもとにx 座標(ざひょう)と y 座標(ざひょう)を計算(けいさん)します。
  • そのため、回転(かいてん)させながらでも、最初(さいしょ)にきめた方向(ほうこう)へまっすぐうごかすことができます。

sin サイン・cos コサインについては、以下(いか)の記事(きじ)で解説(かいせつ)しているので参考(さんこう)にしてください。

スクラッチプログラミング - sin サイン・cos コサインのつかいかた
Scratch の sin サイン・cos コサインをつかって、キャラクターをぐるぐる、ゆらゆらうごかしてみましょう。sin や cos のブロックをつかったことがなくてもわかりやすいように、たくさんのサンプルをのせて解説(かいせつ)します。

回転(かいてん)させながらうごかす

では、けしゴムをうごかすためのブロックをつなげていきましょう。

  1. 青(あお)のうごく量(りょう)0 になるまでうごかしつづけます。
  2. 青(あお)の角度(かくど) をつかって、x 座標(ざひょう)を sin サイン、y 座標(ざひょう)を cos コサインできめます。さらに、青(あお)のうごく量(りょう) をかけて、うごく距離(きょり)もきめます。
  3. 同時(どうじ)に回転(かいてん)させます。
  4. だんだんうごく量(りょう)をへらします。
まわしながらうごかす
まわしながらうごかす

赤(あか)けしゴムにふれた場合(ばあい)

次(つぎ)に、相手(あいて)にあたった場合(ばあい)のブロックもつなげましょう。

  1. うごいている途中(とちゅう)で赤(あか)けしゴムにふれたなら
  2. 青(あお)のうごく量(りょう)1 をたして 赤(あか)のうごく量(りょう) に保存(ほぞん)し、この値(あたい)を利用(りよう)して赤(あか)けしゴムがとばされるようにします。
  3. 青(あお)けしゴムのうごきをとめます。
  4. メッセージをおくって、赤(あか)けしゴムがとばされるをまちます。
あいてをとばす
あいてをとばす

赤(あか)けしゴムのターンにする

けしゴムが机(つくえ)からおちていないなら、ゲーム続行(ぞっこう)です。

  1. ゲーム中(ちゅう)であることを変数(へんすう)で確認(かくにん)します。
  2. ゲーム中(ちゅう)なら、次(つぎ)は赤(あか)けしゴムのターンにします。
  3. 赤(あか)けしゴムがうごくよう、メッセージをおくります。
あいてのばんにする
あいてのばんにする

ここまでで、青(あお)けしゴムをうごかして、赤(あか)けしゴムのターンへきりかえるスクリプトができました。

赤(あか)けしゴムをうごかそう

今度(こんど)は、赤(あか)けしゴムのスクリプトです。最初(さいしょ)の設定(せってい)は次(つぎ)のようにしてください。

うごかすまえのせってい
うごかすまえのせってい

赤(あか)けしゴムは自動(じどう)でうごかします。青(あお)けしゴムとちがって、うごく量(りょう)や方向(ほうこう)をマウスできめる必要(ひつよう)はありません。

  1. メッセージをうけとって、すこしまってからうごくようにします。
  2. うごく量(りょう)は乱数(らんすう)にします。
  3. むきを、青(あお)けしゴムのほうにして、赤(あか)の角度(かくど) に保存(ほぞん)します。
うごかすりょうとほうこうをきめる
うごかすりょうとほうこうをきめる

うごく量(りょう)はランダムですが、実際(じっさい)にプレイしてみた後(あと)で、赤(あか)けしゴムがつよすぎたら数値(すうち)をちいさめにする、よわすぎたら数値(すうち)をおおきめにする、など調整(ちょうせい)してください。

これ以降(いこう)は、さきほどつくった青(あお)けしゴムのスクリプトとおなじかんがえかたです。下(した)のようにブロックをつなげましょう。

まわしながらうごかして、あいてにふれたらあいてをとばす。つくえからおちていないなら、あいてのばんにする
まわしながらうごかして、あいてにふれたらあいてをとばす。つくえからおちていないなら、あいてのばんにする

以上(いじょう)で、赤(あか)けしゴムをうごかして、青(あお)けしゴムのターンへきりかえるスクリプトができました。

けしゴムをとばそう

ここからは、けしゴムをあててとばすスクリプトをつくっていきましょう。

青(あお)けしゴムのスクリプト

まずは、青(あお)けしゴムがとばされる場合(ばあい)です。赤(あか)けしゴムからの 青(あお)をとばす というメッセージをうけとったら、回転(かいてん)させながらうごかします。

まわしながらとばす
まわしながらとばす

ここでも、むきをかえながらうごかすために、sin サイン・cos コサインをつかっています。青(あお)けしゴムをとばす方向(ほうこう)をきめるためにつかうのは、赤(あか)の角度(かくど) だということに注意(ちゅうい)してくださいね。

さて、けしゴムは両方(りょうほう)とも回転(かいてん)させながらうごかすので、場合(ばあい)によっては、うごく量(りょう)が 0 になったとき、下(した)のようにかさなっていることがあります。

けしゴムのはしがかさなっているじょうたい
けしゴムのはしがかさなっているじょうたい

これをふせぐために、さらにブロックをつなげましょう。

  1. うごく量(りょう)が 0 になった後(あと)で、赤(あか)けしゴムにふれているなら
  2. 赤(あか)けしゴムからはなれるまで、すこしずつうごかします。
あいてとはなれるまでうごかす
あいてとはなれるまでうごかす

これで、青(あお)けしゴムをとばすスクリプトができました。

赤(あか)けしゴムのスクリプト

赤(あか)けしゴムをとばすときも、かんがえかたはおなじです。下(した)のようにブロックをつなげましょう。

まわしながらとばして、あいてとかさならないようにする
まわしながらとばして、あいてとかさならないようにする

以上(いじょう)で、けしゴムをとばすうごきができました。

机(つくえ)からおちたらゲーム終了(しゅうりょう)

けしゴムが机(つくえ)からおちたら、ゲーム終了(しゅうりょう)です。机(つくえ)からおちたことを判定(はんてい)できるよう、あたらしいスプライトを用意(ようい)して、スクリプトをつくっていきます。

机(つくえ)のサイズよりひとまわりおおきい枠線(わくせん)のスプライトをつくりましょう。このスプライトはみえないようにするために、背景(はいけい)とおなじ色(いろ)にしてください。

つくえのそとがわにはいちするスプライト
つくえのそとがわにはいちするスプライト

枠線(わくせん)をどれくらいのサイズにするかは、実際(じっさい)にプレイしてみた後(あと)で、けしゴムが机(つくえ)からはみだしたときにふれるおおきさに調整(ちょうせい)してください。

ブロックは下(した)のようにつなげましょう。

いちをきめて、いちばんうしろがわにひょうじする
いちをきめて、いちばんうしろがわにひょうじする

これで、机(つくえ)の外側(そとがわ)に配置(はいち)するスプライトが完成(かんせい)です。

けしゴムがおちたときのスクリプト

次(つぎ)は、けしゴムが机(つくえ)からおちたときのスクリプトをつくっていきましょう。

このスクリプトは、メッセージをうけとったときではなく、緑(みどり)の旗(はた)がおされたとき の下(した)につなげていきます。なぜなら、相手(あいて)にとばされたときだけでなく、自滅(じめつ)した場合(ばあい)でもゲーム終了(しゅうりょう)なので、机(つくえ)からおちたかどうかをゲーム中(ちゅう)ずっとチェックできるようにするためです。

青(あお)けしゴムのスプライトを選択(せんたく)して、下(した)のようにブロックをつなげましょう。

  1. 机(つくえ)の外側(そとがわ)のスプライトにふれたなら
  2. ゲーム中(ちゅう)?いいえ にして、これ以上(いじょう)けしゴムをうごかせないようにします。
  3. 赤(あか)けしゴムが勝利(しょうり)したことをしらせるためのメッセージをおくります。
  4. 回転(かいてん)させながらサイズをちいさくして、ゲームをとめます。
あいてのかちにして、ゲームをおわりにする
あいてのかちにして、ゲームをおわりにする

赤(あか)けしゴムがおちた場合(ばあい)も、かんがえかたはおなじです。赤(あか)けしゴムのスプライトを選択(せんたく)して、下(した)のようにブロックをつなげましょう。

あいてのかちにして、ゲームをおわりにする
あいてのかちにして、ゲームをおわりにする

以上(いじょう)で、けしゴムが机(つくえ)からおちたらゲームをおわりにするスクリプトができました。ここまでで、けしゴムに関連(かんれん)するうごきは完成(かんせい)です。

文字(もじ)を表示(ひょうじ)しよう

ゲームをわかりやすくするために、文字(もじ)のスプライトを用意(ようい)しましょう。

順番(じゅんばん)をしめすコスチュームと、どちらが勝利(しょうり)したかをしめすコスチュームをつくってください。

もじのスプライトのコスチューム
もじのスプライトのコスチューム

ブロックは下(した)のようにつなげましょう。

  1. 位置(いち)をきめて、けしゴムより手前(てまえ)に表示(ひょうじ)されるようにします。
  2. ゲーム中(ちゅう)は、順番(じゅんばん) の値(あたい)におうじてコスチュームをきりかえます。
  3. メッセージをうけとったら、かちをしめすコスチュームにします。
へんすうやメッセージにおうじてコスチュームをかえる
へんすうやメッセージにおうじてコスチュームをかえる

以上(いじょう)で、文字(もじ)を表示(ひょうじ)することができるようになりました。

ペンでねらいをさだめよう

最後(さいご)に、ペンで線(せん)をえがくスクリプトです。青(あお)けしゴムをうごかすときに、ねらっている方向(ほうこう)をペンでえがいて、ねらいをさだめられるようにします。

ペンを設定(せってい)する

あたらしいスプライトと、拡張機能(かくちょうきのう)のペンを追加(ついか)してから、ブロックをつなげていきましょう。スプライトは、なにもえがいていない、からっぽのものでOKです。

  1. ペンのふとさと色(いろ)を指定(してい)します。色(いろ)は、机(つくえ)の外側(そとがわ)のスプライト・背景色(はいけいしょく)とおなじにします。
  2. 余計(よけい)な線(せん)がえがかれないように、ペンをあげるぜんぶけす をつなげておきます。
ペンのさいしょのせってい
ペンのさいしょのせってい

ペンの色(いろ)を、机(つくえ)の外側(そとがわ)のスプライト・背景色(はいけいしょく)とおなじにするのは、机(つくえ)の外側(そとがわ)まで線(せん)がのびたときに、線(せん)がみえないようにするためです。

線(せん)をえがく、けす

次(つぎ)に、メッセージにおうじて、線(せん)をかいたりけしたりしましょう。

  1. ねらう をうけとったとき:ねらいをさだめるときは、青(あお)けしゴムのところからマウスの位置(いち)まで線(せん)がえがかれるようにします。
  2. ねらいをけす をうけとったとき:青(あお)けしゴムがうごきだすときは、線(せん)をけします。
せんをかく、または、けす
せんをかく、または、けす

以上(いじょう)で、ねらいをさだめるペンのスクリプトができました。

青(あお)けしゴムのスクリプト

上(うえ)でつかったメッセージをおくるのは、青(あお)けしゴムです。青(あお)けしゴムを選択(せんたく)してから、下(した)のようにブロックを追加(ついか)してください。

  1. マウスがおされている間(あいだ)、ねらいつづけます。
  2. マウスがはなされたら、ねらいをけします。
2しゅるいのメッセージをおくる
2しゅるいのメッセージをおくる

スクリプト完成(かんせい)

けしゴムおとしのスクリプトが完成(かんせい)です。

あおけしゴムのスクリプト
あおけしゴムのスクリプト
あかけしゴムのスクリプト
あかけしゴムのスクリプト
つくえのそとがわのスクリプト
つくえのそとがわのスクリプト
もじのスクリプト
もじのスクリプト
ペンでねらうスクリプト
ペンでねらうスクリプト

Scratch の Pyxofy ページへいって、実際(じっさい)にけしゴムおとしであそんでみてください。Scratch 消しゴム落としゲーム by Pyxofy

Scratch|消しゴム落としゲーム by Pyxofy
Scratch|消しゴム落としゲーム by Pyxofy

「きょうからはじめるスクラッチプログラミング入門」Pyxofy (著)

Pyxofy が Scratch の基本をまとめた電子書籍を出版しました。
Kindle・Apple Books からご購入ください。

詳細はこちら

まとめ

今回(こんかい)は、Scratch でつくるけしゴムおとしゲームを紹介(しょうかい)しました。スクリプトをつくるときに工夫(くふう)した点(てん)は、以下(いか)のとおりです。

  • 回転(かいてん)させながらうごかすために、sin サイン・cos コサインをつかう
  • 机(つくえ)からおちたことを判定(はんてい)するためのスプライトを、机(つくえ)の外側(そとがわ)にみえないように配置(はいち)する
  • ねらいをさだめるための線(せん)をペンでえがく

赤(あか)けしゴムは自動(じどう)でうごくようにしましたが、こちらも青(あお)けしゴムのようにマウスをおしてうごかせるようにすれば、ふたりプレイができるようになりますね。ぜひつくってみてください!

最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!

SNS で Pyxofy とつながりましょう! LinkedInThreadsBlueskyMastodon X (Twitter) @pyxofyFacebook

関連記事

スクラッチプログラミング - たっきゅうゲームのつくりかた - Part 1
コンピューターと対戦(たいせん)する卓球(たっきゅう)ゲームをつくってみましょう。ラケットのプログラムは簡単(かんたん)です。ボールをいろいろな方向(ほうこう)にうごくようにするのが、プログラミングのポイントになります。
JavaScript - ピンポンゲームの作り方 Part 1 - キーで操作する
JavaScript でピンポンゲームを作成します。キーで操作する方法や衝突判定、ゲームループなどを3回に分けて解説します。今回の Part 1 では、キー押下でパドルを動かせるようにコーディングします。
CSS Art
Articles for creating CSS Art.
CSS Animation
Articles for creating CSS Animation.