fumix

主にプログラミングで遊んだことを書きます。 土曜日の実験室。

fumix

主にプログラミングで遊んだことを書きます。 土曜日の実験室。

マガジン

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

    ピコピコなゲームエンジン、PICO-8でブロック崩しを作る連載(?)

  • PICO-8で遊ぼう

    ピコピコなゲームエンジン、PICO-8で遊んでる記録

最近の記事

2023年、良かったのはXG

2023年は私にとってKPOP元年となってしまいました。 最初はLE SSERAFIM最初は何気なくyoutubeを眺めていたら出てきた動画にはまってしまった LE SSERAFIM(ルセファフィム)から。 KPOPアイドルというより「面白い女たち」として認識。 すぐにファンクラブに入りツアーチケットの抽選に申し込み、名古屋まで25000円というVIPチケットを買ってライブを見にいったり お台場で神席で見たりして で、なんとなくルセラは自分の中で終了した感。 ファンク

    • 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()単純に縦横にブ

        2023年、良かったのはXG

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

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

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

        マガジン

        • PICO-8でブロック崩しを作ろう
          11本
        • PICO-8で遊ぼう
          23本

        記事

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          PICO-8で遊ぼう(スプライトをいっぱい出したいんじゃ編

          表題のとおりです。 まずは単純にいっぱいスプライトを出すプログラムを書きます。 mainballui / bg / spriteRUN実行すると緑のボールが50個、ランダムに等速直線運動し壁で反射します。 zキー(○ボタン)を押すとボールが増えます。 STATS(ctrl+p)を表示して動作させていますが、ボールの動作が単純ですので1800個くらいまでなら30FPSを維持しています。 ボール同士の衝突判定上記のプログラムにボール同士の衝突判定処理is_collision

          PICO-8で遊ぼう(スプライトをいっぱい出したいんじゃ編

          PICO-8で遊ぼう(chatGPTでプログラミングしてみる編

          プログラミングというより、もはや全部作ってもらってる感じ…。 確実にバカになっていく自分がいます。 ボール同士の衝突のアルゴリズム教えて質量は1として書き直してluaで書き直して速度を一定に保ちたいこれをメソッドにしてありがとうばっちりです。でもボール同士が衝突したときにくっついてしまうことがあるので解消したい。chatGPTすげえ

          PICO-8で遊ぼう(chatGPTでプログラミングしてみる編

          Raspberry Pi 4をUSBブートさせる

          Raspberry Pi(ラズパイ)は通常SDカードにOS入れて起動しますが、SDカードは割と壊れやすく長期利用には適さないとのことで、USBに繋いだUSBメモリやらSSDから起動するUSBブートを試しました。 上記の外付けSSDでUSBブートしてみます。しかしSSDって1TBでも1万円しないんですねえ。ラズパイにそんなに大容量は必要ないかな?と思って250GBのにしましたが…。 作業手順以下のサイトを参考に作業をおこないました。 最短手順だとRaspberry Pi

          Raspberry Pi 4をUSBブートさせる

          BM40V2(自作キーボード)の設定

          先日、自作キーボードを組み立てたのですが設定に手間取ったので今後忘れないようにメモしときます。 自作キーボードと言っても、出来合いのPCBに好きなキースイッチ、キートップ等を組み付けただけで特にハンダ付けも必要ないので、組み立てだけならば10分くらいで出来ます。 購入したキーボードはこれ今回買ったPCBは上記した一体型格子配列の40%キーボードのBM40です。 40%キーボードとはキーの数が40個くらいしかない小さなキーボードのことで、一般的なテンキー付きキーボードが10

          BM40V2(自作キーボード)の設定