見出し画像

【IchigoJam】????????

また note の記事を書いていない週末がやってきてしまった…あまり時間も残ってないし、面倒だから複雑なことは書きたくない…また雑な IchigoJam 用のプログラムを書いてごまかすか…アドベントカレンダーに載せるほどではない程度に雑なのを…

というわけで、何を書くべきかよくわからない気持ちをハテナの山で表現した。

※IchigoJamはjig.jpの登録商標です。

作ったもの

「?」がどんどん積もっていく。
画面いっぱいに積もると、落ちていき、また積もっていく。

画像
スクリーンショット

プログラム

10 ' ????????
20 IF VER()>=13224 W=POS(3):H=POS(4) ELSE W=32:H=24
30 CLS:N=W:FOR I=0 TO N-1:[I]=I:[W+I]=H-1:NEXT
40 P=RND(N):X=[P]:Y=[W+P]
50 IF X=W-1 AND Y=H-1 POKE#900+Y*W+X,#3F ELSE LOCATE X,Y:?"?";
60 [W+P]=[W+P]-1:IF [W+P]<0 [P]=[N-1]:[W+P]=[W+N-1]:N=N-1
70 IF N>0 WAIT 1:GOTO 40
80 WAIT 60
90 FOR I=1 TO H:SCROLL DOWN:WAIT 2:NEXT
100 WAIT 60
110 GOTO 30

このプログラムは、CC0 1.0 でライセンスする。

OneFiveCrowd で実行 (高速、非公式) (推奨)
IchigoJam web で実行 (公式、低速)

解説

10 ' ????????

FILES 対応のタイトル。

20 IF VER()>=13224 W=POS(3):H=POS(4) ELSE W=32:H=24

画面のサイズを取得する。

30 CLS:N=W:FOR I=0 TO N-1:[I]=I:[W+I]=H-1:NEXT

画面をクリアし、各列で今どこまで「?」が積もっているか (次にどこに「?」を置くべきか) の情報を初期化する。

40 P=RND(N):X=[P]:Y=[W+P]

候補の列の中から、今回どこに「?」を積むかをランダムに選択する。
それに応じて、具体的にどこに「?」を置くかを決定する。

50 IF X=W-1 AND Y=H-1 POKE#900+Y*W+X,#3F ELSE LOCATE X,Y:?"?";

決定した位置に「?」を置く。
右下に置く際は、PRINT で置いてしまうと意図に反してスクロールしてしまうので、POKE で置く。
それ以外に置く際は、シリアル通信でも見られるよう、PRINT (の省略形) で置く。

60 [W+P]=[W+P]-1:IF [W+P]<0 [P]=[N-1]:[W+P]=[W+N-1]:N=N-1

「?」を置いた列について、次に「?」を置く位置を1行上げる。
その結果、次に「?」を置く位置が画面外になったら、候補列の末尾にある候補を今回積んだ列の情報の位置に上書きし、今回積んだ列を候補から外す。

70 IF N>0 WAIT 1:GOTO 40

まだ積める列が残っているならば、少し待機し、次の「?」を積みに向かう。
積める列が無くなった (画面全体が「?」で埋まった) ら、下の処理を行う。

80 WAIT 60
90 FOR I=1 TO H:SCROLL DOWN:WAIT 2:NEXT
100 WAIT 60
110 GOTO 30

少し間を置いたあと、スクロールにより「?」を下に落とす。
画面が空になったら、再び少し間を置き、最初に戻る。

この記事が参加している募集

note オフィシャルイベント

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

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
【IchigoJam】????????|みけCAT
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1