見出し画像

PICO-8でブロック崩しを作ろう(スタート/ゲームオーバー/スコア/残機の追加

以前やったことと被る内容もありますが、スタート/ゲームメイン/ゲームオーバーのゲームの遷移状態とスコアや残機を追加することでゲームとして(一応)成立する形にします。

_init() / _update60() / _draw()

ボールやパドルの制御用のグローバル変数を定義していた_init()を状態遷移を表すグローバル変数modeの定義だけにします。
ゲームのメイン処理をおこなっていた_update60()modeの状態によって各処理を振り分けるようにします。
同様に_draw()modeによって描画処理を振り分けるようにします。

update_start()関連

update_start()にてxボタンの押し待ちをします。xボタンを押すとstartgame()が実行されますが、これは前回までの_init()でやっていたボールやパドルのグローバル変数定義をおこなっています。
ボール用のグローバル変数定義の一部をserveball()にて分けていますが、これは後述するミスからのリスタートするときにボールの位置と速度を初期状態に戻すために使うためです。

update_gameover()

update_gamestart()と全く同じ処理です。

update_game()

基本的には今まで_update60()に書かれていたボールとパドルの動きの処理をそのまま持ってきてます。
パドルがボールを打ち返したときにグローバル変数pointsを+1する、ボールが下端に当たった時をmissとして処理してグローバル変数livesを-1するを処理として追加しました。
livesが0よりも小さくなった時はgameover()を実行、それ以外はserveball()を実行してゲームを再開させています。

ミスしたときの音

sfx(2)でミスした時の音を鳴らしています。

draw_…関連

draw_start()では画面をクリアしてタイトルを表示しています。
draw_gameover()ではゲーム画面を残したまま中央に黒帯を描画して、そこにゲームオーバーの文字列を表示します。

スタート画面とゲームオーバー画面
メイン画面にはLIVES(残機)とSCORE(得点)を追加

これでゲームとして最低限の体裁は整ったかと思います。

本日の成果物


この記事が気に入ったらサポートをしてみませんか?