マガジンのカバー画像

PICO-8でブロック崩しを作ろう

11
ピコピコなゲームエンジン、PICO-8でブロック崩しを作る連載(?)
運営しているクリエイター

記事一覧

PICO-8でブロック崩しを作ろう(色んな種類のブロック

ボールがあたれば壊れるだけのブロックだけではつまらないので、色んな種類のブロックが出せるようにします。 とりあえず機能はおいておいて、色の違うのブロックが配置できるようになるところまで実装します。 ブロックの種類ブロックの種類は以下のものを想定します。 B:normal brick(通常ブロック X:empty space(空 /:new line(改行 I:indestructable brick(壊れないブロック H:hardened brick(硬いブロック S:sp

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

ブロックを自由に配置できるようになったので次はレベル(ステージ)の実装をします。 _init()グローバル変数levelを空にして、新たにlevelnum(現在のステージ)とテーブルlevelsを定義します。levelsにとりあえず3ステージ分のブロックを配置しておきます。デバッグが楽になるように少なめブロックにしてステージクリアを容易にしておきます笑 _update60(),_draw()_update60(),_draw()にステージをクリア(mode=="level

PICO-8でブロック崩しを作ろう(ブロックパターンの実装

縦横に並べているだけだったブロックを自由な位置に配置できるようにします。 _init()_init()にグローバル変数levelを定義します。 パターンの意味は次のようになります。 B:ブロック X:空白 /:改行(ブロック・空白の合計が11個を超えた場合も改行) 1〜9:直前のB or Xを数値分横に並べる。 ※ブロックが5個連続で並び空白が6個並んでるのが1段目でその下に空白が5個、ブロックが6個並ぶ2段目がきます。 buildbricks()単純に縦横にブ

PICO-8でブロック崩しを作ろう(コンボチェインの実装

今の状態のブロック崩しでは、ブロックを一つ消す毎に+10点がSCOREに加算されるだけなので、プレイヤーの上手下手に関わらず点数が一律のままで面白くありません。 そこでパドルにボールが当たるまでにブロックを連続で消すことができれば加算されるポイントが2倍、3倍、4倍…と増えていくコンボチェインの実装をします。 serveball()--check if ball hit pad--check if ball hit brickボールがブロックに当たった時の処理中に ・加算さ

PICO-8でブロック崩しを作ろう(ボールの反射角度をコントールする

今回はパドルの動きによって反射するボールの角度が変わるような実装をしてみます。 実際の物理法則を正確にシミュレーションする必要はなくそれっぽく動いてくれればいいので…ボールとパドルがぶつかって反射処理をおこなう際に、 パドルの動き(速度)とボールの動き(速度)が向かい合っている(相対)場合は反射するボールの角度が高くなる パドルの動き(速度)とボールの動き(速度)が同じ方向(並走)の場合は反射するボールの角度が低くなる みたいな実装をすればいけるのではないでしょうか?

PICO-8でブロック崩しを作ろう(スティッキーパドルの実装

今の実装ではスタート時やリプレイ時には、ボールは決まった場所からスタートしますが、それをパドルの上にボールをくっつけて、パドルの動きに合わせて左右に動かすことができるようにします(#13)。 startgame()startgame()でstickyフラグを定義します。 update_game()xボタンを押すとstickyフラグをfalseにします。 ボールの動きの処理のところはstickyフラグが立っていた時はパドルの動きにあわせる処理にします。 ボール発射時、常に

PICO-8でブロック崩しを作ろう(ブロックを追加する

ブロック崩しを作ろうというタイトルにしながら連載5回目にしてようやっとブロック出現です(#10,#11)。 startgame() / buildbricks()startgame()内でブロック一つ分の幅と高さを定義します。 buildbricks()では設置するブロックのx,y,v(表示フラグ)をテーブルで定義します。横11、縦5の55個のブロックをここでは定義しています。 draw_game()draw_game()にブロック描画処理を追加します。 ブロックが表示

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

以前やったことと被る内容もありますが、スタート/ゲームメイン/ゲームオーバーのゲームの遷移状態とスコアや残機を追加することでゲームとして(一応)成立する形にします。 _init() / _update60() / _draw()ボールやパドルの制御用のグローバル変数を定義していた_init()を状態遷移を表すグローバル変数modeの定義だけにします。 ゲームのメイン処理をおこなっていた_update60()はmodeの状態によって各処理を振り分けるようにします。 同様に_d

PICO-8でブロック崩しを作ろう(パドルでボールを反射させよう

今回はパドルでボールを反射させてみます。 動画の#6,#7,#8の内容なのですが、動作が気に入らないので書き換えています。※今後の内容次第では再度書き換えるかも パドルとボールの衝突判定_update()にball_box()を追加してパドルとボールの衝突判定をおこないます。衝突した場合はballのy方向の速度を逆向きにすることで反射する動作になります。 パドルにボールが反射するように動作していますのでこれで終了…と簡単には終わりません。 パドルのサイドにボールが当たっ

PICO-8でブロック崩しを作ろう(動くパドルを作る

今回は動くパドルを作ってみます。 パドルの表示パドルを動かす当然表示されただけで動かせませんので_update()に矢印キーの左右btn(0),btn(1)でパドルが動かせるようなコードを追加します。 できたといえばできたのですが、パドルの動きが直線的で硬いので、もうちょっと色気ある動きにしてみたいと思います。 パドルの動きに色気(加速度)をつけるbuttpressというフラグを用意①して左右キーの入力があるとき②はtrueにします。左右キーの入力があるとき②にpad_

PICO-8でブロック崩しを作ろう(効果音を鳴らす

PICO-8で遊ぼうでPICO-8で色々と遊んだ記録をnoteでつけていますが、毎回テーマを考えるのが大変で執筆ペースが上がりません。 そこで、youtubeにあるPICO-8のチュートリアル動画を見ながら実際にゲームを組んでみた記をしてみることにします。 題材はLazy DevsチャンネルにあるPico-8 Tutorial - Breakoutにしたいと思います。 最初の方はPICO-8自体のチュートリアルなのでそこは飛ばして#4からはじめます。まずはざざっと4隅の壁で