2022-12-04
2016年から6年目、IchigoJam Advent Calendar 2022、はじまりました!

「IchigoJamのカレンダー | Advent Calendar 2022 - Qiita」

Advent Calendar(アドベントカレンダー)とは12月からクリスマスの12/25まで、1日1記事公開されるリレー形式のオムニバス企画。「Qiita Advent Calendar」では技術系のさまざまなAdvent Calendarが公開され、いつもと違った分野に一気に詳しくなれる楽しい企画!


雪が降るプログラム - SHIROのIchigoJam日記
12/1、最初の記事はPCN上田、斎藤さんによるクリスマスらしい作品! IchigoJamでのアニメーションは、プログラミングの基本を体得するのにもいいですよね!ぜひ自分で打ち込んでみて、改造してみましょう!PLAYコマンドによるお手軽な作曲もこどもたちに人気です。テンポを変えたり、アレンジしたり、友達のIchigoJamと同時に鳴らして合奏したり、自由にお楽しみください!

#IchigoJam on Twitterで気になる作品、発見!

福井高専入学時にクラス全員購入した懐かしのポケコンでのプログラムが元ネタということ作品。左右対称の7x7のキャラクターをランダムに生成してくれます!かわいい!

いろんな作り方ができるのがプログラミングの楽しいところ。福野流で作ってみます。

7x7の左右対称キャラクター、1行を、ランダムな下位4bitに、下位3bitを左右に反転したものを上位にくっつけたものと解釈し、それを7行並べるというアルゴリズムでいってみます。

書き換え可能なキャラクターコード224を表示しておきます。

?CHR$(224)

ビットを左右するコマンドはないので、事前に3bit、8パターンを配列に作っておきましょう。(プログラムにしましたが、手で全パターン書いてもOK)

?"10 LET[0]";:FORI=0TO7:?",";I<<2&4+I&2+I>>2&1;:NEXT:? 10 LET[0],0,4,2,6,1,5,3,7

生成したプログラムに上で考えたアルゴリズムを足して動かすと謎キャラ誕生!

A=#700:FORI=0TO7:N=RND(16):POKEA,(N+[N&7]<<4)*!!I:A=A+1:NEXT

RND(16)で4bitのランダムなパターンを生成して、7でビット積をとり下位3bitにしたもので配列を使って左右反転させ4bitシフトしたものをキャラクターパターン(PCG)としてメモリに書き込んでいます。(配列使わず上位も計算した方が短かったかも)

「!!I」は変数Iを二重に否定していて、Iが0のときは0、1から7のときは1になることで一番上の行を空けています。

VIDEO5 にして、パターン表示を大きくし、32コまとめてつくるよう更に手を加えたプログラムがこちら

10 LET[0],0,4,2,6,1,5,3,7:VIDEO5:A=#700:FORC=224TO255:?CHR$(C);:FORI=0TO7:N=RND(16):POKEA,([N&7]<<4+N)*!!I:A=A+1:NEXT:NEXT

画面タップで新しいパターンが表示できるように改造したいときはこちら

20 IF BTN() CLS:RUN ELSE CONT

気に入ったキャラクターのパターンをメモリから取り出すプログラム例

N=X+Y*8:?CHR$(224):?"POKE#700";:FORI=0TO7:?",";PEEK(#700+N*8+I);:NEXT:?

XとYでほしいキャラクターの位置を指定してキャラクター定義用の8つの数を取得します。8bitのパターンは16進法2桁なので、覚えちゃってもいいですね!


@num_kadoma さんのPC-E500シリーズ1行プログラム「5×7 px キャラクタ生成」を、
@PPc1245 さんがPC-1245用に移植した「5×7ドット グラフィック作成」を、
@nana_hachimaru さんがIchigoJam用に移植した「7x7の左右対称の謎キャラをひたすら生成するもの」がベースです。

かわいい投稿を発見!小学5年生の頃の自由研究でIchigoJam!

創造を連鎖しよう!

links
- IchigoJam Advent Calendar 2022

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS