中目黒駅徒歩3分でオンラインも可能。
お子様に合ったカリキュラム無料相談対応

Scratch(スクラッチ)

【Scratchの変数の使い方】はじめての変数を使ったゲームの作り方

Scratchを使ったプログラミングについて解説していくこのシリーズでは、初回の前回は「乱数」の使い方を解説しました。

シリーズの第2回の今回は、「変数」の使い方について解説していきます。

変数は、スコア(得点)や自分や敵のライフ(残り機体数)を数えるときに使うことができます。

最初は難しいかもしれませんが、一度おぼえてしまえば、多くのゲームで得点やライフを作ることができるようになるので、ここで身につけておきましょう!

変数を使ってシューティングゲームの変数を作る

まずは、下のリンクのシューティングゲームで遊んでみてください。左右の矢印キーでロケットを動かし、スペースキーでビームを出して敵キャラの惑星を撃ち落とすゲームです。

https://scratch.mit.edu/projects/641366328/

このゲームは、敵をたおすことはできますが、スコア(得点)が数えられません。また、1回敵に当たっただけでゲームオーバーになってしまいます。

今回は、変数を使って、このゲームにスコアとライフを追加する方法を解説していきます。

まず、上のリンクのゲームを「リミックス」しましょう。

リミックスができたら、スコアをつくっていきます。

まずはじめに、自分のロケット(「Rocketship」スプライト」)に、「スコア」という変数をつくります。

変数というカテゴリから、「変数を作る」というボタンをクリックして、変数をつくっていきます。

次に、新しい変数名に「スコア」と名前をつけて、「OK」をクリックします。

これで、「スコア」という名前の変数を作ることができました。

続いて、敵をビームで倒したときに、「スコア」が1ずつ増えるようにします。

スペースキーを押して発射したビーム(「Lightning」スプライト)が敵キャラの惑星(「Planet2」スプライト)にぶつかると、敵キャラから「ビームが敵キャラにあたった」というメッセージが送られます。

この「ビームが敵キャラにあたった」というメッセーを受け取ったときに、「スコア」が1ずつ増えるプログラムを自分のロケットのコードにつくっていきます。

Rocketshipスプライトのコードタブを開き、イベントカテゴリから「メッセージを受け取ったとき」のブロックを出します。

ブロックを出したら、受け取るメッセージの内容を「ビームが敵キャラにあたったを受け取ったとき」に変更します。

続いて、 変数カテゴリから、「スコアを1ずつ変える」というブロックを取り出して、先ほどつくったメッセージのブロックの下につなげます。

スコアが増える仕組みはこれで完成ですが、このままだと問題があります。

この状態だと、前回プレイしたときにスコアが10点で終わったとすると、次にプレイしたときに10点からスタートしてしまいます。

これを避けるために、ゲームがはじまった時(緑の旗が押されたとき)に、スコアを「0」にするという処理を追加します。

Rocketshipプライトに、緑の旗が押されたときに、スコアを0にする、というプログラムを追加します。

すると、緑の旗を押してゲームをスタートするたびに、スコアが「0」からスタートするようになります。

このように、変数を使うときには、ゲームがはじまった時に変数がいくつからスタートするのかを決める処理を入れるのを忘れないようにしましょう。

変数を使ってライフをつくる

一度敵に当たっただけでゲームオーバーになってしまうと、ゲームとしては難しすぎます。

そこで、自分のロケットのライフを設定し、敵キャラに3回当たったらゲームオーバーになる仕組みを、変数を使ってつくってみましょう。

作り方は、スコアをつくったときとほとんど同じです。

まずは、「Rocketship」スプライトを開いて、「ライフ」という変数をつくります。

名前は「ライフ」にして、「OK」をクリックします。

次に、このライフ変数を使って、敵キャラに当たったときにライフが1ずつ減っていく仕組みを作ります。

敵キャラ(「Planet2」というスプライト)のコードの中に、「もしRocketshipに触れたなら」「ゲームオーバーを送る」というプログラムがあるので探しましょう。

「ゲームオーバー」というメッセージの名前の部分をクリックした後、続けて「新しいメッセージ」をクリックします。

メッセージの名前に「敵キャラに衝突した」と入力し、OKをクリックしましょう。

これで、自分のロケットが敵キャラにふれたときに、「敵キャラに衝突した」というメッセージが送られるようになりました。

この「敵キャラに衝突した」というメッセージを受け取ったときに、ライフが1ずつ減るというプログラムを追加していきます。

まず、Rocketshipスプライトのコードタブを開いて、イベントカテゴリから「メッセージをうけとったとき」というブロックを出し、「敵キャラに衝突した」というメッセージに変更します。

続いて、変数カテゴリーから、「変数を◯ずつ変える」というブロックを出して、先ほどの「敵キャラに衝突したとき」の下につなげます。

変数名は「ライフに」変更し、「ライフを-1ずつ変える」に変更します。

ここまでできたら、緑の旗を押してプログラムを動かしてみましょう。自分のロケットと敵キャラに当たったら、ライフが1ずつ減っていくのがわかると思います。

この状態だと、前回プレイしたライフの状態からゲームがスタートしてしまうので、ゲームがはじまったときには、必ずライフが3からスタートするようにします。

これで、ゲームがスタートしたときにライフが3からスタートして、1ずつ減っていく仕組みが完成しました。

ただし、この状態では、いつまでたってもゲームオーバーになりません。そこで、ライフが0になったら、ゲームオーバーになる処理を加えます。

演算から不等号のブロックを出して、ライフが1より小さくなったなら、「ゲームオーバー」というメッセージを送るというプログラムをつくります。

すると、ライフが「0」になると、ゲームオーバーという文字が出てきて、ゲームが終了するようになることがわかると思います。

スコア(得点)やライフ(機体の残り数)は、ゲームを作るときによく使う仕組みです。

ぜひこの機会に作り方をおぼえて、これから作るゲームに応用してみてください!

ゲーム制作やプログラミングをさらに学びたい方へ!

本ブログでは、Scratchを使ったゲーム制作の基本について解説していますので、ぜひご覧ください!

「お家でやったけれども、うまくいかなかった」「さらに高度なことをやってみたい!」という方へ

最近は、プログラミングを学習するためのアプリや本、無料のプラットフォームも増えてきて、子どもがプログラミングを学習する機会や環境も整ってきました。

しかし、保護者の方とお話ししていると

  • あきてしまって、長続きしなかった
  • 本やアプリで自習してみたけど、うまくいかなかった
  • 保護者の方がプログラミングの経験がなく、子どもに教えるのが難しい

といったお話をよくうかがうことも多いです。

そんな方は、一度当ブログを運営するプログラミング教室MYLABのレッスンを体験してみませんか?

MYLABのレッスンの特徴は以下のような特徴があります。

  • お子さまが楽しくプログラミングを続けることができるカリキュラム
  • 一人ひとりの「創りたい!」にこたえられる知識を持ち、成長をサポートできるメンター陣
  • 初学者だけでなく、ロボコンにチャレンジしたり、本格的な3Dゲームをつくったりする上級コースまで継続できる

「本当に楽しめるのかな?」「うちの子に合うかしら?」「飽きっぽいうちの子が続けられるかしら?」と思う方もいるかもしれません。

そんな方は、ぜひ一度無料で開催している体験レッスンに来て、実際に体験してみてください!

ゲーム・プログラミング体験(90分)

  • どんなゲームをつくることができるのか、まずは遊んでみる
  • ミッションをクリアするためのアイデアを考える
  • コーチのサポートを受けながら、自分のアイデアを実現する!

体験会では、お子さまが集中してプログラミングしたり、作品を作ったりしている普段とは違う姿をみられるはずです!

ご興味をもっていただいた方は、ぜひ下のボタンからお申し込みください!

オンラインまたはMYLAB中目黒校での
体験授業お申込みはこちら

 

 

ABOUT ME
柿沼 功
MYLAB事業責任者。経営学修士(MBA)。株式会社明光ネットワークジャパンにて、明光義塾のeラーニングシステム開発・運用の責任者をつとめ、2020年2月よりMYLAB事業に従事。