「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で気になる作品、発見!
触発されて #Ichigojam で7×7の左右対称謎キャラをひたすら生成するものを作ってみました。
— ハチマル (@nana_hachimaru) December 3, 2022
IchigoJam web 象さんアイコンから「アイアイ」「ナマケモノ」「モモンガ」で見られます。 https://t.co/Y3RXRTvLcm pic.twitter.com/twq0TzBGlg
福井高専入学時にクラス全員購入した懐かしのポケコンでのプログラムが元ネタということ作品。左右対称の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!
BASICの全てを忘れたので小5の自分の自由研究に教えて貰おうと思います pic.twitter.com/fqm6v9J1F5
— ૮ . ̫ .。 ა (@skc_66666) November 29, 2022
創造を連鎖しよう!
links
- IchigoJam Advent Calendar 2022