上から落ちてくる食べ物を拾うだけの単純なゲームだよ。
ガイコツを避けながら拾ってね。
MakeCode Arcade の初心者向けだよ。

https://arcade.makecode.com/S53482-50385-64344-50857
このリンクから、実際に遊べるよ。どうやって作られているか、プログラムを見ることもできるよ。

簡単なゲームを作ってみよう

上から落ちてくるものを拾う、よける、という簡単なゲームを作ってみよう
この先を実際にやってみるみは、順次処理、ループ、条件分岐、変数、配列、関数、の知識が必要です。
当教室での初級を終えた人が対象です。


プレイヤーキャラを準備しよう
[スプライト]の[作成]から画像のブロックを [最初だけ] に追加してね。追加したブロックの「スプライト」の横の□をクリックすると画像を編集する画面になるよ。


プレイヤーの絵を描こう
ドット絵をいちから描いてもいいけど、最初は準備されてるものから選択しよう。[ギャラリー]をクリックして表示される絵を選ぼう。選んだら右下の[完了]を押してね。


プレーヤーが表示された!
ゲーム画面にプレイヤーが出たかな。
この絵は同じ手順でいつでも変更できるから、後からオリジナルの絵にしてみてね。


プレーヤーの表示位置を下にさげよう
[スプライト]の[物理]から[位置をxyにする]を追加して、数値をx(80) y(110) にしよう
ゲーム画面は、縦120x横160という大きさだよ
プログラミングでは、縦(たて)をY、横(よこ)をXと呼ぶ事が多いから覚えておいてね


プレイヤーを動かせるようにしよう
[コントローラー]の[シングルプレーヤー]から[ボタンで動かす]を追加しよう。
ゲーム画面にマウスカーソルを乗せて、キーボードの[矢印]キーか[A]、[W]、[D]、[S]、キーを押してみよう。動いたかな。


動きを左右だけにしよう
最後に追加した[ボタンで動かす]の(+)プラス部分をクリックしてvyだけ0(ゼロ)にしよう。上下に動かなくなるよ。
この数字はボタンを押した時にキャラが動く速さだよ。vxを(50)や(200)に変えてどう変わるかやってみてね。


画面外に出れなくしよう
今のままだと、プレーヤーは画面の外まで動けてしまうので、画面から出れなくしよう。
[スプライト]の[エフェクト]から[set xx (mySprite) stay in screen]をオンで追加してね。
画面から出れなくなるよ。


背景を表示しよう
[シーン]の[シーン]から[背景画像を(□)に設定]を追加しよう。
追加したらプレイヤーと同じように□をクリックして背景を設定しよう。ここも最初は[ギャラリー]から選択しよう。
後からオリジナルの描を描いてみてね。


食べ物が上から落ちてくるようにしよう
[ゲーム]の[ゲームプレー]から[ゲームが更新された時]を用意します。このブロックはくっつけるブロックではないので、空いているところに置いてね。このブロックは指定した秒数で繰り返しずっとコールされる関数だよ。食べ物が出てくる間隔を指定しよう。数字をクリックすると、候補がポップアップ表示される。選択してもいいし、候補に無い数値はキーボードで入力もできるよ。
ここでは、500ミリ秒を設定しておこう。
ミリってなに?
1秒の長さを1000個に分けた長さがミリだよ。1000ミリで1秒。500ミリは1秒の半分の長さだよ。


落とす食べ物を準備しよう
プレーヤーと同じ手順で食べ物を追加してね。
追加したら、場所、タイプ、名前の変更が必要だよ。
上から落ちてくるので、場所は x(80) y(0) に、タイプをFood、変数名は好きな名前でいいよ。ここでは「myFoodA」した。変数名をクリックして「変数の名前を変更」で変更できる。


食べ物を落とそう
[スプライト]の[物理]から、[xxの速度をvx(50)vy(50)にする]を追加して、vxを(0)、vy(50)にしてみよう。
食べ物が落ちたかな?


画面外の食べ物を削除(破壊)しよう
[スプライト]の[エフェクト]から、[自動的に破壊をオン]を追加しましょう。
これを追加しても何も起こらないように見えるけど、非常に重要なブロックだよ、これを忘れるとゲームは動かなくなる。試しに外すか、オフにして、しばらく放置すると分かるよ、動きが遅くなったり、止まったりするようになってしまう。一度やってみてね。


vx、vyを理解しよう
x、yは縦横という意味でよく使うことば(変数)だね。
vx、vyは「縦横に動く速さ」という意味で使うよ。
vyは全部プラスの数字(50)なので全部下へ落ちていくね。
vxがゼロの時は左右に変化がないから真下に落ちる、
-50の時は左に、50の時は右に移動するよ。
つまり、vxがマイナスは左、プラスは右に進むことを覚えてね。
vyの時はプラスが下、マイナスが上だよ。


食べ物の種類を追加しよう
こんどは、少し違う方法で食べ物を追加してみまよう。
[スプライト]の[発射体]を使うよ。「横から」と「スプライトから」の2種類ある。ここでは[発射体□を横から]を使おう。このブロックは速度の指定ができるけど、タイプが指定できない。なので、[スプライト]の[重なり]から[xxをooタイプにする]を使ってFoodを指定してね。最初の位置も同じように指定しよう。この2つの関数(いちごとハンバーガー)はどちらも同じ機能だよ。
発射体には大きな特徴が2つあるよ
・画面外に出たスプライトは自動で破壊されるよ
・指定のスプライト位置から出現させることもできるよ
[スプライトから]を使えば、キャラから弾を発射させるのに使えるね。これは後で使うよ。


ここまでのまとめ

ゲームにしていくよ

ゲームにするとは、ゲームのルールを決めることだよ。
食べ物を拾ったらどうなる?どうしたらゲームが終わる?
・ルールを自分で考える。
・自分で考えたルールのゲームを完成させる
・遊んでみる。きっと、遊ぶと新しいアイディアが浮かぶよ。
 新しいルールをどんどん追加しよう


当たり判定を追加しよう
[スプライト]の[重なり]を使うよ。
くっつくブロックじゃないから、空いている所においてね。
置いたらタイプを「Food」に変えよう
何と何が重なったら?を指定してるよ。
これは「プレーヤー」と「フード」が重なった時。という指定だね。
つまり、PlayerタイプのスプライトとFoodタイプのスプライトが重なった時に実行される関数だよ。
「other」は「他」という意味。otherSpriteという変数は、他のスプライト今回は重なったフードだよ。「アザー」と読むよ。


食べ物をキャッチしたら(当たったら)点数を追加しよう
[情報]の[スコア]から[スコアを(1)変える]を追加します。
「1変える」という意味は1だけ増やすという意味だよ。
「食べれない物をキャッチしたら減点させる」というルールを作るときは、「スコアを(−1)変える」とするとスコアを下げることもできる。
この数字で、「高得点」や「大ダメージ」も作れるね。


フードをキャッチしてみよう
スコアが表示されたかな?

でも、ちょっと問題ありだよね?
点数がたくさん増えてしまうよね。
これは、フードが落ちるとき、づっとプレーヤーキャラと重なってるから、どんどんスコアが増えてしまうんだ。


問題点を修正、食べ物を消そう
重なっている間スコアが増えるので、落下する間にたくさんスコアが増えてしまいました。
この問題は重なった食べ物を消してしまえば解決
[スプライト]の[エフェクト]から[destroy]を追加しよう
「destroy」とは破壊する、滅ぼす、という意味の単語だよ
「デストロイ」って読むよ


敵キャラを落とそう
とってはいけないキャラを追加してみよう
ここで、知っておくと便利な技を教えるね、今ある、食べ物を出している[ゲームが更新された時]ブロックを右クリックして「複製する」を選択してみよう。
コピーされたね、あとは修正するだけ。便利だね。
今回は、名前を「myEnemy」画像は好きな画像、速度はvx(10) vy(60) タイプをEnemyにしてみよう。
「Enemy」とは「敵」という意味の単語だよ
「エネミー」って読むよ


敵に当たったらゲームオーバー
「プレーヤー」と「敵」が重なったら、つまり、PlayerタイプのスプライトとEnemyタイプのスプライトが重なった時に実行される。
今ある当たり判定からコピーして、タイプをEnemyにしよう。[スコアを変える]を消して、[ゲーム]の[Game Over]から[GameOver負け]を追加しよう


GAME OVERとなるか確認
敵に当たってみて、GAME OVER画面になるか確認してね


落ちてくる物の場所を毎回変化させよう
いまは、いつも同じ場所からアイテムが出現するので、ゲームが簡単すぎるね。全部の[ゲームが更新された時]のxとvxを[計算]の[ランダムな数字を選択]にしよう。
範囲はvxを(-10)から(10)、xを(0)から(159)にしてみよう。vyをランダムに変えたら落ちる速度が毎回変わるよ。


タマを発射してみよう
[コントローラー]の[シングルプレーヤー]から[Aボタンが押された時]を追加しよう。これはくっつかないタイプだから空いている場所に置いてね。
中にスプライトの発射体で球のスプライトを用意しよう。
ここでは球を「ハート」にしてみたよ。
たったこれだけで、発射できるようになる。すごいよね。


当たり判定を追加しよう
これはもう分かるよね。「sprite」と「otherSprite」を「destroy」するだけだよ。
ちょっとだけアレンジして敵が消える時「ハート」が出るようにしてみよう。
destroyの(+)をクリックするとエフェクトが表示される。いろいろなエフェクトがあるから試してみるといいよ。数字は消えるまでの時間だよ。


ちょいアレンジ。撃った敵を食べ物に変えてみよう
ハートが命中したら敵を「さくらんぼ」に変えてみよう。
ここでのポイントは、「さくらんぼ」の位置と速度を命中した敵と同じにすることだね。otherSpriteという変数から情報をとればいいよ。