初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Scratchで はじめようゲームプログラミング

11.「玉をやり過ごす」を作ろう②

 

[ 「玉をやり過ごす」を作ろう① ] の続きです。

今回、はじめてスプライトエディタを使う人もいると思います。
エディタに慣れないと、思ったように絵が描けません。
ですので絵を描く練習をおすすめします。
新しくスプライトを追加して練習するのもいいですし、練習用のプロジェクトを作ってもいいでしょう。
一度だけでなく時々でも描いて、自分の絵をコレクションするのもいいと思います。
別のゲームで使うこともあるかもしれません。

 

 

壁を動かそう

壁として作ったスプライトを動かします。
3つの四角は1つのスプライトに描いたものなので、プログラムも1つになります。
コードのタブをクリックしましょう。

入力イベントを作っていきます。
スペースキーが押されたときを持ってきます。

スペースキーが押されたときを持ってくる

 

制御からもし〜ならを持ってきます。

もし〜ならを持ってくる

 

演算から◯=◯を持ってきます。

◯=◯を持ってくる

 

動きからx座標を持ってきます。
右辺には 0 を入れて、x座標が 0 かどうかを調べます。

x座標が0かどうか比較する

 

1秒でx座標を0に、y座標を0に変更するを持ってきます。
移動時間は 0.3 秒にします。
上のブロックのx座標のみ 50 に設定してあとは 0 にします。

移動時間0.3秒と座標を設定する

x座標が 0 のとき、0.3 秒で座標 50 の位置へ移動させます。
そして、x座標が 50 のときは座標を 0 の位置へ戻します。
これで、行ったり来たりするだけの動きになります。

 

スペースキーをゆっくり何回か押してみてください。
壁(3つの四角)のスプライトは下図のように動きます。

壁が左右に動く

上手くいかない時は、スプライトの座標は 0,0 になっているか、絵の位置は正しく描かれているか前のページに戻って確認してください。

 

 

クリック(タッチ)にも対応しよう

スペースキーで遊べるようになりました。
でもこれだと、スマホやタブレットでは遊べません。
キーボードのないデバイスでも遊べるようにしたいと思います。

このゲームは1つのキーで四角を左右に動かすだけです。
これを画面をクリック(タッチ)しても動くように改造します。

 

ステージ画面全体から入力イベントを受けたい時は、ステージにプログラムを作ります。
ステージをクリックしたら、まず イベントからステージが押されたときを持ってきます。
同じくイベントからメッセージ1を送るを持ってきます。

ステージを選択する

これでステージ画面をマウスでクリックすれば「メッセージ1」が送られます。
注意しなければいけないのは、3つの四角をクリックしたとき「メッセージ1」は送られません。
この問題を解決したいときは、いま作ったプログラムを壁スプライトにも用意すればOKです。

 

イベントメッセージを受け取る仕組みを作ります。
壁スプライトを選択します。

壁スプライトを選択する

 

イベントからメッセージ1を受け取ったときを持ってきます。

メッセージ1を受け取ったときを使う

 

まず、四角を動かすプログラムをメッセージ1を受け取ったときの下へ移動します。 これでメッセージで四角を動かせるようになりました。
次にメッセージ1を送るスペースキーが押されたときの下に持ってきます。

四角を動かすプログラムをメッセージで動かす

作業が終わったら実行して、スペースキーを押したりステージ画面をクリックして、壁スプライトの動きを確認しましょう。

 

 

玉を発生させよう

落ちてくる玉を作ります。
絵は Scratch に用意されているものを使います。
スプライトを選ぶをクリックして新しいスプライトを用意します。

玉のために新しいスプライトを作る

 

Ball をクリックします。

Ballを選ぶ

 

ステージの画面を見ると黄色い玉が表示されています。
スプライト一覧にも追加されています。

玉のスプライトが追加された

 

イベントから旗が押されたときを持ってきます。
見た目から大きさを100%にするを持ってきます。
サイズを 30 %に変更しましょう。

スプライトのサイズを30に変更する

 

制御から10回繰り返すを持ってきます。
ここでは発生させる玉の数だけ指定します。
20 回繰り返すに変更します。

20回繰り返すを用意する

 

玉は6つの位置からランダムに発生させます。
そのため玉を作るとき、発生させたい座標の計算をする必要があります。

動きからx座標を0にするを持ってきます。

x座標を0にするを持ってくる

 

演算から3つのブロックを用意します。
1から10までの乱数◯*◯(掛け算)◯+◯(足し算) を並べておきます。

演算子を用意する

 

0 から 5 までの乱数50 を掛けて -130 を足します。

玉の発生位置を算出する

掛けている 50 は玉の間隔です。壁の絵の間隔に合わせています。
ステージの中心座標は 0,0 なので -130 することで左に寄せています。

この計算式をx座標を0にするの中に入れてください。

 

つづいて、制御から自分自身のクローンを作るを持ってきます。

プロジェクトを作成する

 

実行してステージ画面を確認してください。
下図のようになっていればOKです。

実行してステージ画面を確認する

 

ここ重要ポイントです。
玉の間隔が壁(水色の四角)と同じかどうか確認しましょう
違うのであれば、玉または壁の間隔を調整して同じにします。

玉と壁の間隔を同じにする

 

玉をステージの上から発生させます。
動きからy座標を0にするを持ってきます。
座標は 180 にします。
実行すると玉がステージ上部に表示されます。

玉のy座標を180にする

 

 

玉を移動させよう

玉の移動処理を作ります。
制御からクローンされたときを持ってきます。

玉の移動処理を作る

 

制御から10回繰り返すを持ってきます。
回数は 68 にします。理由はのちほど。

58回繰り返す

 

動きからy座標を10ずつ変えるを持ってきます。
値は -5 にします。

プロジェクトを作成する

-5 は玉の移動速度です。それを 68 回繰り返すと
-5 * 68 = 340
ステージの縦のサイズが 360 ドットなので、ステージの上から下まで玉が移動することになります。
あっ、正確にはちょっと短いのでピンクの台座の途中で止まります。

 

次回に続きます。