スクラッチ

スクラッチでリストを使ってセリフを切り替える 〜敵キャラを追加してゲームらしくしよう〜

最終更新日 2025年4月23日 by toytune

スクラッチはアメリカの大学、MIT(マサチューセッツ工科大学)メディアラボで開発されたビジュアルプログラミング言語です。

はじめに

前回の続きで、ここまで作ってきたプログラム敵キャラクターを追加して、さらにゲームらしく進化させていきます。

前回までに、ネコのスプライトがButterfly 2(蝶)に触れるとスコアが加算されるしくみを作りました。今回はそこに、もう1体のButterfly 2を追加し、逆にスコアが減るような処理を加えていきます。

さらに、今回は「リスト」というスクラッチの機能を使います。

リストは、複数のデータをまとめて扱える箱のようなものです。データを「追加」「削除」「表示」することができます。今回はあらかじめセリフをリストに登録しておき、ネコがヘビに触れたときに、リストの内容からセリフを切り替えて表示するしくみを作ります。

▼ 今回作成するプログラム(の旗をクリックして動作を確認することができます)

ヘビのスプライト(Snake)を追加する

画面右下の「スプライトと背景」のところから、「スプライトを選ぶ」をクリックします。

スプライトの追加にカーソルをホバーしクリック

画面が遷移し、「スプライト」のリストが表示されます。その中から「動物」をクリックすると、動物に関するスプライトが表示されるので、Snake(ヘビ)の「スプライト」を見つけクリックで選択します。
(下記画像を参考にしてください。)

動物をクリックしSnakeをクリック

「スプライトと背景」に3つめの「スプライト」として、Snake(ヘビ)の「スプライト」が追加されているか確認します。あれば、「Snake」の「スプライト」をクリックで選択します。

Snakeが追加されていることがわかる

Snake(ヘビ)の「スプライト」を選択したら、ブロックの画面を見ていただき、「コスチューム」のタブをクリックします。Snake(ヘビ)のコスチュームを確認したり、編集できる画面に遷移します。

このSnake(ヘビ)の「スプライト」には3つのコスチュームがあることがわかりまます。

コスチュームをクリックすると3つのコスチュームがあることがわかる

ヘビ(Snake)のアニメーションを作る

ここでは、すでに作成している蝶のスプライトで作ったアニメーションと同じものを作ります。位置やスピードについては、Snake(ヘビ)のスプライト用に変えたいと思います。

まずブロックを組むので、Butterfly 2(蝶)の「スプライト」を見ながらつくっていっても良いです。左上のコードのタブをクリックし、コスチュームからコードブロックの画面に切り替え、確認しながら作っていただいても大丈夫です。

面倒だと思う方は、次に紹介するコピーする方法に進んでください。

コードをクリックする

同じものをつくるのは面倒だと思う場合は、Butterfly 2(蝶)の「スプライト」からコードブロックをコピーしてSnake(ヘビ)の「スプライト」にコピーして使いまわしたいと思います。

先ずコピーする側となるButterfly 2(蝶)の「スプライト」をクリックします。

Butterfly2をクリック

蝶のブロックのかたまりは2つあります。どちらからでも構いませんが、ここでは大きい方からコピーしていきます。

かたまりの先頭のブロックをクリックし、キーボードの操作でコピーをします。
コピーの方法はお使いのOSによって異なります。

  • Window:「Ctrl」を押しながら「C」を押す
  • Mac:「command」を押しながら「C」を押す

明らかにコピーできているという表示は出てこないので、この操作ができたら次に進みます。

旗が押されたときをクリックし、WindowdsであればCtrlを押しながらC、MacであればCommandを押しながらCを押す

今度はコピーしたものをSnake(ヘビ)の「スプライト」にもっていきたいので、Sake(ヘビ)の「スプライト」をクリックします。

Snakeをクリックする

コピーしたブロックをペースト(貼り付け)します。場所はどこでも構いません。
ペースト(貼り付け)も方法はOSによって異なります。

  • Windows:「Ctrl」を押しながら「v」を押す
  • Mac」「command」を押しながら「v」を押す

もしペースト(貼り付け)ができなかった場合、コピーができてないかと思うので、Butterfly 2(蝶)の「スプライト」に戻り、改めてコピーをしてください。

WindowsはCtrlを押しながらV、Macはcommandを押しながらVを押す

できたら小さい方のかたまりのブロックも同じくコピーしていきます。
Butterfly 2(蝶)の「スプライト」をクリックします。

Butterfly2をクリック

ここも同じく先頭のブロックをクリックして、コピーをします。

  • Windows:「Ctrl」を押しながら「c」を押す
  • Mac:「command」を押しながら「c」を押す
捕まったを受け取ったときをクリックしてからWindowsはCtrlを押しながらC、Macはcommandを押しながらCを押す

できたら再度Snake(ヘビ)の「スプライト」に戻ります。

Snakeをクリック

同じくペースト(貼り付け)します。

  • Windows:「Ctrl」を押しながら「v」を押す
  • Mac:「command」を押しながら「v」を押す
WindowsはCtrlを押しながらV、Macはcommandを押しながらVを押す

ここまでできたら、一旦ステージを見て現在のSnake(ヘビ)の「スプライト」の位置を確認したいと思います。

現在はButterfly 2(蝶)の「スプライト」のブロックをそのまま持ってきただけなので、Butterfly 2(蝶)の「スプライト」と同じ位置に表示されています。

ステージにSnakeが中央上部に表示される

ブロックがすべて組み終わったら、下記の4箇所のパラメータを変更します。
もし、パラメータが下記と同じであれば変更の必要はありません。

  • の旗が押されたとき」のところから3つ下にある「スピード〜にする」を「20」に変更
  • 「大きさを〜%にする」を「25」に変更
  • 「x座標を〜、y座標を〜にする」をそれぞれ「120」、「-100」に変更
  • 「捕まったを受け取ったとき」のすぐ下の「スピードを〜ずつ変える」を「5」に変更
左側のブロックの塊のスピードを20に変更、大きさを25%に変更、X座標を120、Y座標を-100に変更する

ネコのスプライトを調整する

Snake(ヘビ)のスプライトを追加したことで、ネコの「スプライト」も表示位置や、ジャンプの速さも変えて、お互いの「スプライト」が触れたり、避けたりできるようにしていきたい思います。

ネコのコードブロックを操作していくので、ネコの「スプライト」をクリックで選択します。

の旗が押されたとき」のすぐ下に「y座標を〜にする」をドラッグで入れ、数値を「-70」に変更します。

y座標を〜にするをドラッグし旗がおされたときの下にくっつけ〜を-70に変更する

そこから下の方のブロックにあるジャンプの速さと高さも変更していきます。
下記の4つブロックの数値も変更します。図も参照してください。

  • 「〜秒待つ」の2つを「0.05」に変更
  • 上の「y座標を〜ずつ変える」を「15」に変更
  • 下の「y座標を〜ずつ変える」を「-15」に変更
10回繰り返すの中の〜秒待つを0.05に変更、もう一方も0.05へ変更。y座標を〜ずつ変えるも上は15にし下は-15に変更する

ネコのスプライトにリストを追加する

いよいよ「リスト」を追加していきます。冒頭で記載したとおり、「リスト」はデータを格納するもので、今回は吹き出しの内容をデータとして「リスト」へ格納したいと思います。
そのままネコの「スプライト」が選択された状態で、ブロックの「変数」のところにある「リストを作る」をクリックします。

リストを作るをクリック

リストをクリックすると、モーダルの画面が表示されます。
リストの名前は任意ですが、ここでは「セリフ」と入力しています。
次にこの「リスト」は、ネコの「スプライト」でしか使わないので、「このスプライトのみ」の方にチェックを入れます。

完了したら、最後に「OK」をクリックし「リスト」を作成します。

新しいリスト名にセリフと入力しこのスプライトのみを選択したあとOKをクリックする

「リスト」が作成されると、先ほど「リストを作る」とクリックしたところの下に「リスト」に関するブロックが追加されています。またステージ内にも「リスト」が表示されます。

ブロックとステージにリストが表示される

ステージに表示されたリストを操作して、「リスト」内にデータを格納します。今回は、ネコのセリフを2つ入れて、状況によってそのセリフを出し分けていきたいと思います。

ステージのリストの左下の「+」を2回クリックします。

ステージのリストの右下の+をクリック

2つ空の「リスト」が追加されますので、それぞれ下記のセリフを入力します。

  1. 捕まえた
  2. かまれた
捕まえたとかまれたにそれぞれ変更する

もし間違って「+」をクリックしてしまっても、「リスト」の右側にある「×」マークをクリックすると削除することができます。

バツマークをクリックする

「リスト」にデータを追加できたら、表示から消したいのでブロックの中の「セリフ」のチェックをクリックで外します。

セリフの左側のチェックをクリックして外す

外れるとステージの「リスト」は非表示になります。非表示になっているだけで、「リスト」にデータは格納された状態なので大丈夫です。

ステージからリストが消えた

今度は「リスト」に設定したセリフを設定していきます。

まず、「捕まえた!と1秒言う」となっているところの「捕まえた!」を「リスト」に変更します。
「リスト」のブロックの中から、「〜の〜番目」のブロックをドラッグし、「捕まえた!」と手入力しているところに入れます。次に最初の「〜」は「セリフ」を選択し、さらに次の「〜」は「1」と入力します。
これで「リスト」の1番に入れた「捕まえた!」の吹き出しがでるようになりました。

セリフの〜番目をドラッグし〜と1秒言うの〜の中にいれ〜を1に変更する

次にSnake(ヘビ)の「スプライト」に触れた場合のアニメーションを追加していきたいと思います。

この部分だけのブロックを作ってから、大きなかたまりのブロックにいれたいので、「もし〜なら」のブロックを空いているスペースにドラッグします。

もし〜ならをドラッグする

「〜に触れた」を空いているスペースにドラッグします。ドラッグできたら、「もし〜なら」の「〜」の中に「〜に触れた」を入れます。
「〜に触れた」の「〜」には、「Snake」になるよう選択してください。

もし〜ならの〜に〜に触れたをドラッグし、〜のところをSnakeへ変更する

今度は、「もし〜なら」の処理の中に3つのブロックを入れていきます。
先ずブロックの中から、「〜と〜秒言う」のブロックを「もしSnakeに触れたなら」の中にドラッグします。

もしSnakeに触れたなら野中にこんにちは!と2秒言うをドラッグしていれる

「〜の〜番目」のブロックを「〜」ととなっているところにドラッグし、「2」番目に変更します。これで「リスト」の2番目にいれたデータがセリフとして表示されます。
セリフの長さも1秒にします。(セリフの長さはそのままでも大丈夫です。)

セリフの〜番目をドラッグしこんにちは!のところにいれ〜番目の〜に2に変更する

「〜を〜ずつ変える」を「もしSnakeに触れたなら」の中にドラッグします。
ヘビ(Snake)に触れるとスコアを減らしたいので「-1」に変更します。

もしSnakeに触れたならの中の下にスコアを〜にずつ変えるをドラッグし〜を-1に変更する

これでSnake(ヘビ)に触れた場合のプログラムができたので、「ずっと」の中、蝶に触れたときのブロックの下に入れます。
わかりにくいかもしれませんが、画像を参照して入れてください。

もしSnakeに触れたならのブロックの塊をずっとの中の下にドラッグする

動作確認

動作確認をステージでみてみましょう。

Snake(ヘビ)に触れると「かまれた」と吹き出しがでて、蝶に触れると「捕まえた」とでるかと思います。「リスト」に入れたセリフが条件によって切り替わっていることがわかるかと思います。
以前作成したスコアについてもSnake(ヘビ)に触れると減っていきます。

Snakeに触れるとかまれたとセリフが出てButterflyにふれると捕まえたとセリフがでる

まとめ

  • Snake(ヘビ)のスプライトを追加し、Butterflyと同じ動きをさせる
  • コードの数値をSnake用に変更
  • ネコのジャンプや位置を調整
  • リストにセリフを登録し、条件によって切り替えて表示

今回は、リストに固定のセリフを登録して使いましたが、ゲーム中にセリフを追加・削除したり、状態に応じてリストを活用することで、さらに複雑な表現が可能になります。

Snakeの登場で一気にゲームらしくなってきましたね!

次回は、「ゲームオーバー」の仕組みを追加して、ゲームに明確な終わりを持たせていきます。背景の切り替えや、ゲームの停止処理にもチャレンジしましょう。

次の記事:スクラッチで切り替える背景画像を設定し、切り替えの条件を追加する