
HackforPlayで楽しもう!ゲームセンター! EXA-KIDS2021
ITキッズコンテスト EXA-KIDS2021に HackforPlayで応募しました。
このコンテストのために、これまで作ったことのあるゲームのコードを簡略化したり、新しい要素を入れたゲームを取り入れたりして、6つのゲームを組み合わせ、今までの集大成として作ったゲームです。HackforPlayらしい、ちょっとしたRPG要素も入れました。
HackforPlayで楽しもう!ゲームセンターについて紹介します。
このゲームセンターには、
クレーンゲーム・スロット・TRYPOD・競馬・エアホッケー・ブロック崩し
があります。
【ゲーム説明】
クレーンゲーム
これは、クレーンゲームです。
1回で100円使用します。
ぶつかると画面がzoomされて、ゲームが始まります。
左右キーで動かして、下キーでアームが下がります。
ぴったりの位置でアームをおろすとぬいぐるみをゲットできます。
クレーンゲームのアームは、HackforPlayのアセットにはないので、いわや、ボタンなどのアセットを大量につかって、アームを再現しました。
残りのぬいぐるみが1個になったときに スタッフが来て、ぬいぐるみを補給してくれます。
アームをおろす位置が少しずれると落ちるようにして、リアルさを出しています。
1年前にも作ったゲームでしたが、コードは1から書き直してすっきりさせました。
客(CP)もプレイできるようにしました。
スロット
これは、スロットです。
1回3コイン使用します。
ぶつかると画面がzoomされて、ゲームが始まります。
スペースキーで左から順にストップできます。
縦・横・斜めどれかが揃うとフィーバーです。
当たると、コインをゲットできます。キャラによってもらえる額が違います。
最初はenterキーで止められるようにしていましたが、スマホにはenterキーがないので、スマホでもできるようにspaceキー(攻撃キー)に変更しました。
1年前に作ったコードがぐちゃぐちゃだったので、1から作り直しました。しかも1年前に作ったスロットは1列でしたが、今回は3列にして、縦・横・斜めの複雑な判定も入れました。
客(CP)もプレイできるようにしました。
TRYPOD
これはTRYPODです。
1コインで1回できます。
ぶつかるとゲームが始まり、ルーレットが回ります。
タイミングゲームなので、ぴったり赤のところでスペースキーを押すと、ぬいぐるみをゲットできます。
Math.sin 、Math.cosを使って、ルーレットの円を描かせました。X座標をちょっとずつ変えて、ピンク色が動いているように見せています。
filterという機能がスマホでは使えなかったので、スマホ対応にするために、スマホかどうかをサイズで判別して、filterをかけるかかけないかを決めました。
競馬
これは、競馬ゲームです。
ぶつかるとゲーム画面になります。
1位になりそうな馬を予想し、コインを賭けます。馬の順位はランダムです。
選んだ馬が1位を取ると、コインBET数×倍率分、コインをゲットできます。
BET数を指定できるようにしたり、馬によって倍率が違うようにして工夫しました。
カメラを何個も追加して、それぞれの馬視点のカメラを入れ、迫力を出しました。
エアホッケー
これは、エアホッケーです。
台の左側にぶつかるとZoomしてゲームが始まります。CPと対戦できます(CPめちゃめちゃ強いです)。
マレットを上下に動かして球をはじき返します。相手が返せなかったら勝ちです。
勝つと100円ゲットできて、 負けると100円減ります。
Math.sin Math.cosを使って、球が向きにそって、前に進むプログラムを組みました。
相手の強さが絶妙な感じになるように、何度もプレイして調整しました。
ブロック崩し
これは、ブロック崩しです。
ぶつかるとゲームが始まります。
左右に動かして球をブロックに当てて壊します。すべてのブロックを壊すと10コインゲットできます。
本物のブロック崩しのゲーム機はもっと小さいですが、わざとインパクトがあるように大きい見た目にしました。
これもMath.sin Math.cosを使って、球が向きにそって、前に進むプログラムを組みました。
途中で横から白いお邪魔棒が出てくるようにして、単調にならないよう工夫しました。
【その他の演出や設定】
両替
本物のゲームセンターっぽくしたくて、両替機も設置しました。
お金とコインを交換できるようになっています。
畑のおっちゃん(お小遣い稼ぎ)
お金がなくなったらゲームができなくなるので、もっと遊べるようにHackforPlayらしいRPG風の要素もちょっと入れました。
畑のおっちゃんに話しかけると畑仕事を頼まれます。隅々までちゃんと苗を植えるとお小遣いがもらえるようになっています。おっちゃんの機嫌がいいと少し多めにもらえます。
畑に苗を全部植えたらお金をゲットできるようにするのが大変でした。
BGM選択
ゲームセンターのにぎやかさを出すために、店内に入ったらBGMを流すようにしました。
BGMがいらない人もいると思ったので、「まどうしょ」でBGMなしも選択できるようにしました。また、著作権フリーの曲”Morning”と、僕が自分で作った曲”シューティングスター”を選択できるようにしました。何もしなければフリーの”Morning”が流れるようになっています。
僕の曲”シューティングスター”は、CoderDojo名護の企画に参加したときにBeepBoxというツールで初めて作った曲です。楽譜が読めず、楽器がほとんど弾けない僕でもかっこいい曲を作ることができました。
【難しかったところ・大変だったところ】
客(CP)の動き
自分がプレイするだけでは寂しいので、リアルさとにぎやかさを出したくて、客(コンピューター)も入れたのですが、これが一番難しかったです。
客は左右どちらかの階段からランダムで出てきて、ランダムにクレーンゲームのぬいぐるみを取るようにしたり、ランダムにスロットが止まるようにするのが大変でした。ここが一番バグが出やすかったです。
コードを関数化
たくさんのゲームを複製するためにコードを関数化するのをよく使いました。簡単に呼べるように引数を指定して、場所などを決められるようにするのが大変でした。
【まとめ】
2か月ほどかかった大作となりましたが、最後まであきらめずにできたのでよかったし、とても楽しいゲームができたのでよかったです!
出来上がってからCoderDojo瑞穂のメンバーにやってもらって、意見をもらったり、細かいバグを修正したりしました。2Fの画面が重いのは、TRYPODのルーレット棒の数が多いのが原因のひとつのようだったので、プレイ画面に移る前のルーレット棒は少し数を少なくしました。
一つ一つのゲームのコードは簡略化しましたが、たくさんのゲームを合わせたり、お金やコインの計算などいろいろな処理を入れたりしたところ、結果的に膨大なコードになってしまいました。でも自分なりには思うような動きになったと思います。
このゲームセンターは、なるべくだれでも直感的にやれるように、矢印キーとスペースキー、タップだけの操作にしたり、細かいところまでこだわって作ったので、ぜひたくさんの人に遊んでほしいです。
このゲームでHackforPlayをやってみたいと思う人が増えて、プログラミングが好きになる人が増えてくれたらうれしいです。
これからももっともっとHackforPlayを楽しみたいです!
2021.11