ゲームライブラリ構築までの道 #3「ブロック崩し編」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

お気に入りの腕時計のベルトが切れてしまった、下駄です。
 

左手にapplewatch、右手に睡眠計測用の時計を、何年もつけていたんですが、睡眠計測用の時計は、まあまあ安物をネットで買ったため、同じ商品はもう販売すらしておらず、ベルトが手に入らない状態です。
 

手作りしてもいいんですが、なかなか形状が入り組んでいて、一筋縄に行かない感じです。
 

そもそも、applewatchで細かな睡眠計測ができれば、なんの問題もないんですが、いっそのこと評価の高い有料アプリを購入してもいいかもしれませんね。

本日のIT謎掛け

「睡眠計測アプリ」と、かけまして、
 

「脱獄計画」と、ときます。
 

そのココロは・・・
 

毎日継続して、ハカる事(測る、企てるの意味の謀る)が重要ですね。

本日の目的

壁打ちテニスの3回目は、ラケットを動かして、ボールを打ち返します。
 

キーボードカーソルの左右キーと、マウスの挙動と、スマホ用に、touchmoveの3つに対応させます。
 

どれもイベント操作になるので、それぞれのやり方のライブラリを作ることを念頭に考えてコーディングしてみたいと思います。

ソースコード

not canvas

本日のまとめ

複数のイベントによって、ラケットの動きを制御していますが、それぞれのイベントでのプログラムが全く違うという点が、今回のポイントになります。
 

mousemoveとtouchmoveは、動きとしては似ていますが、touchendも必要になる点が今回少し苦労した箇所になります。
 

この処理を入れないと、2回めにタッチして動かす時に、1回目のタッチの座標を保持してしまうため、touchendで、値をクリアして上げる必要があります。
 

あと、コリジョン(当たり判定)処理関数を独立化させて、壁判定と、ラケット判定をそれぞれ記述しました。
 

ただ、ベタに書いているので、あまり効率的ではないですが、今のところはこれでOKにしておきましょう。
 

このプログラムの発展型として、ブロック崩しができますが、その際には、それぞれのブロックと、ラケットの処理を効率化するのと、もう少し演算処理をしっかりやって、シンプルなコードにする必要がありますね。
 

次回は、ゲーム開始と終了の処理をつけてみたいと思います。お楽しみに。
 

全体のソースは、githubにpushしているので、そちらから取得してください。
 

https://github.com/yugeta/game_block
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です