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

マウスやタッチでけしゴムをひっぱってとばす「けしゴムおとし」を 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 とつながりましょう! LinkedIn・ Threads・Bluesky・ Mastodon・ X (Twitter) @pyxofy・ Facebook

関連記事

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