見出し画像

PICO-8でブロック崩しを作ろう(レベルの実装

ブロックを自由に配置できるようになったので次はレベル(ステージ)の実装をします。

_init()

グローバル変数levelを空にして、新たにlevelnum(現在のステージ)とテーブルlevelsを定義します。levelsにとりあえず3ステージ分のブロックを配置しておきます。デバッグが楽になるように少なめブロックにしてステージクリアを容易にしておきます笑

_update60(),_draw()

_update60(),_draw()にステージをクリア(mode=="levelover")した時の処理、update_levelover(),draw_levelover()をそれぞれ追加します。

update_levelover()

update_gameover()をコピペしてupdate_levelover()を作り、×(zキー)ボタン押し待ち処理をします。

nextlevel()

startgame()をコピペして次のレベル(ステージ)の初期処理をするnextlevel()を作ります。
levelnum+1しますが、このときにlevelsに設定したステージ数より多かった場合は全ステージクリアの処理に移行します。ただ全ステージクリア用の処理はまだ作っていませんので、ここではmode="start"にして最初の画面に戻します。

startgame()

startgame()ではlevelnum1に戻してレベル(ステージ)を初期化します。

--check if ball hit brick

ボールがブロックに当たった時の処理中にlevelfinished()関数でレベルクリア(ブロック全消し)したかどうかの判定をおこないます。
判定がtrueの場合、levelover()関数でレベルクリア時の処理をおこないます。

levelfinfished()

テーブルbrick_vの状態を見てtrue or falseを返す関数となります。
brick_vの中身が一つでもtrue(ブロックが配置されてまだ消えていない)だった場合はfalseを返します。

levelover()

gameover()をコピペしてlevelover()を作ります。
modeleveloverに切り替えるだけの処理です。

draw_levelover()

draw_gameover()をコピペしてdraw_levelover()を作ります。
次のステージ待ちの画面です。

本日の成果物



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