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

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

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

子どもでもわかるSCRATCH入門

19.インベーダーゲームを作ろう その1

昔、大ヒットしたアーケードゲーム「スペースインベーダー」を作ってみたいと思います。
と言っても仕様を近付けると制作が難しくなるため、ルールはざっくりとしたものにします。
「インベーダー風なゲーム」という感じです。

この講座を途中から読んでいる方へ

初めて扱うことについては丁寧に説明していますが、2度目以降になると
手順や解説を省略するようにしています。
つまり、章が進むにつれ説明がラフになっていきます。
説明内容が理解できない場合は、講座の初めから読むことをおすすめします。

 

1. 講座の受け方

すでにゲームを何本も作っていて、ある部分の仕組みを知りたいのなら
必要な所のみを読むだけで良いと思います。

ゲームを作ったことが無い、または、何度か作っているものの完成させたことが無い
という人は、説明と一緒に作っていくことをおすすめします。

プログラミングというものは、兎に角、慣れていないとつまづき易い作業です。
一緒に作っていくことで次のような良い点があります。

・コーディングに慣れる (プログラムを書くこと)
・ツールの使い方に慣れる
・トライアンドエラーに慣れる
・検索に慣れる (分からない点がある時は調べるようにしよう)
・デバックに慣れる (プログラム上の誤りを取り除く作業)

慣れてくるとゲーム作りがより楽しくなりますよ。

 

 

2. ゲームの内容を確認する

今回のサンプルです。プレイしてみて下さい。(注:音が出ます)

画面が表示されない場合はここをクリック

ゲームの仕様は次のようになります。

・自機は左右のカーソルキーで移動できる
・スペースバーでビームが撃てる
・自機のビームは、画面中に1発しか存在できない
・敵は横移動しながら、壁まで来ると少し下に降りる
・敵の弾に当たる、または、敵が自機と同じ位置 (y軸)まで来たらゲームオーバー
・敵の数が少なくなると進攻速度が速くなる
・敵が全て消滅したら、再度発生する。この時、防壁ブロックも復活する
・敵一匹を倒すと100点、全て倒すと2001点のボーナスが入る

こんな感じです。

 

今後の話ですが、あるゲームをマネして作ろうとした場合、
その元になるゲームの仕様はメモ帳に書き出す習慣を持ちましょう。
プログラミングは様々な書き方ができますが、仕様に適した書き方が大切です。
仕様を理解せずに雰囲気で作り始めると、後から
「今のままの書き方だと、次の仕様を実現するのが面倒くさい」
なんて状況が多くなります。

 

 

3. プロジェクトを作成する

説明と一緒にゲームを作っていく為のプロジェクトを作成しましょう。

自分で絵を描きたいと思っている人は、新規のプロジェクトを作って下さい。
他ユーザーのプロジェクトの絵を使いたいと思っているなら、
バックパックを使ってコピーしてくることもいいと思います。

 

用意された絵を使うという人は、素材プロジェクトをリミックスして使いましょう。
リミックスとは、他ユーザーのプロジェクトを自分のプロジェクトへコピーして
改造が可能になる仕組みです。

こちら >>素材プロジェクト

サインインした状態で上のプロジェクトを開きます。
「中を見る」で編集モードにして、右上にあるリミックスをクリックしましょう。

scratch リミックスの仕方

最後にダイアログの OK をクリックすれば、リミックス完了です。
自分のプロジェクトとして自由に改造できます。

 

なお、リミックスした人は始めに自機以外のスプライトを隠すようにして下さい

初心者向けプログラミング入門

新規でプロジェクトを作成した人は、ネコのスプライトを消しましょう

 

 

4. 背景を黒くする

ゲーム中の背景が黒なので、ステージの背景を黒く塗ります。
ステージを選択し、背景タブをクリックします。

背景を黒く塗る

 

エディタを開いたら、まず画面右下のモードを確認します。
ビットマップモードならそのまま、現在がベクターモードならビットマップに変換
クリックします。
続いてツールの塗りつぶすをクリックして、カラーパレットの黒色をクリックします。
最後に編集エリアをクリックすると黒色で塗りつぶされます。

ビットマップモードで黒く塗る

 

 

5. 自機をカーソルキーで動かす

これからの説明は、リミックスしていることを前提に行います
新規でプロジェクトを作成している場合は、前もって絵 (スプライト)を用意して下さい。

さて、一番初めに自機を動かしたいと思います。
自機のスクリプトを次のように組みます。

スプライトを動かすスクリプト

x・y座標の指定は初期配置の設定です。
ずっと (繰り返す)の中にカーソルキーが押されたかの判断文を入れます。
調べるカテゴリの中にoooキーが押されたときを使って判断文を作ります。
選択リストを出して右向き矢印と、左向き矢印を選びましょう。

実行してみて下さい。そして、左カーソルキーをずっと押して下さい。
現状、自機がステージの端に隠れてしまうほど移動ができます。

ステージの端に隠れる

 

ステージの端に隠れないようにスクリプトを変更します。

ステージ端まで移動しないようにする

x座標を調べて端に移動しないようにします。
右に向かって移動する処理は
x座標が200より小さく、かつ、右向き矢印キーが押されたとき
という条件にします。

かつはどちらの条件も成立している時のみ有効になります。
ステージの端に来るとx座標の200より大きくなってしまうので、
条件が満たされず移動できなくなるのです。

演算ブロックのの向きには注意して下さい。

 

次回に続きます。