あるプログラミング実況YouTuberのかたがパックマンを作っていたので、つい勢いで「あなたがC言語 コンソールでつくるなら私はJavaScriptでつくる」と宣言してしまいました。

宣言から3日も経過してしまったのでとりあえず公開することにしました。

動作確認はこちらからどうぞ。

現状の問題点。

モンスターの追跡アルゴリズムがいい加減すぎる。乱数で適当に進路変更させているだけ。
パックマンに撃退されたモンスターは目玉だけになって巣に戻るが、その部分が実装できていない。
パックマンがモンスターを食べた場合、獲得点数が200点、400点、800点、1600点と表示されるが、その部分ができていない。

他にも欲を言い出すとフルーツを出すとかいろいろあるのですが、今後改良していきます。

これ以上、なにも書かないのではコンテンツ不足なので、迷路の部分だけ書きます。

これはパックマン実況プレイの動画をキャプチャしたものです。

これをもとに迷路を再現します。餌が置かれている間隔を1とし、これを適当な定数をかけてある程度の大きさで描画できるようにします。背景を黒で塗りつぶし、最初に太くて青い線を引き、そのあと少し細くて黒い線を引けば、輪郭部分だけが青く残ります。

イメージ的には青いテープを貼り付けて、そのあとそのうえに黒いテープを貼るという感じですが、角の部分が欠けてしまわないように少し外側にずらします。

どこからどこまで直線を描画するかですが、これはキャプチャした画像から調べます(けっこう大変かも)。

とりあえず今回つかうグローバル変数です。Main関数が呼ばれたらプログラミングスタートです。

Main関数のなかでCanvasやContextを取得して0.01秒ごとに再描画をさせます。

今回は迷路部分だけです。

迷路を描画するためのDrawMazes関数を示します。

青で太い線を描画して、そのあと黒で一回り細い線を描画することで、青い部分を壁のように見せかけます。線の太さはDrawAisle関数とDrawWall関数にあるように35ピクセルと30ピクセルです。DrawWalls関数とDrawAisles関数のなかで適切な座標を指定してDrawWall関数とDrawAisle関数を呼び出します。

これで迷路部分の描画にかんしては完成です。