0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IchigoJam で砂嵐もどき

Posted at

「テレビも既に砂嵐」…?
そういえばうちのテレビ環境、放送休止のときなぜかケーブルテレビ局への連絡を要求してくることがあるんだよなあ。
どういう連絡をするのがいいんだろう…?

放送休止時にケーブルテレビ局への連絡を要求するテレビ

というわけで(?)、IchigoJam で砂嵐もどきを作ってみた。

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

プログラム

10 ' スナアラシ
20 CLS
30 FOR I=#700 TO #7FF
40 POKE I,0
50 NEXT
60 FOR I=#900 TO #BFF
70 POKE I,RND(#20)+#E0
80 NEXT
90 FOR I=#700 TO #7FF
100 POKE I,RND(#100)
110 NEXT
120 GOTO 90

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

解説

  1. 最初の見た目が悪くならないよう、画面を0で埋め、続いてキャラクターRAMを0で埋める。(20~50行目)
  2. 画面をキャラクターRAMに対応する文字でランダムに埋める。(60~80行目)
  3. キャラクターRAMをランダムに書き換える処理を繰り返す。(90~120行目)

よく見ればパターンが使い回されているのがわかるかもしれないが、よく見なければ画面全体がランダムなドットで埋まっているように見えるだろう。

実行結果

IchigoJam Q では、画面 (キャラクターRAM) を少しずつ書き換えているのが目立ってしまった。

IchigoJam R では、同じキャラクターコードが隣接している場所では繰り返しが目立つが、書き換え位置は目立たなかった。

改良

同じキャラクターコードが隣接している場所で繰り返しが目立ったので、同じキャラクターコードが8方向で隣接したら弾く処理を追加した。

10 ' スナアラシ 2
20 CLS
30 FOR I=#700 TO #7FF
40 POKE I,0
50 NEXT
60 FOR I=#900 TO #BFF
70 POKE I,RND(#20)+#E0
80 IF I%32>0 IF PEEK(I-1)=PEEK(I) GOTO 70
90 IF I>=#920 IF PEEK(I-32)=PEEK(I) GOTO 70
100 IF I%32>0 AND I>=#920 IF PEEK(I-33)=PEEK(I) GOTO 70
110 NEXT
120 FOR I=#700 TO #7FF
130 POKE I,RND(#100)
140 NEXT
150 GOTO 120

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

IchigoJam R で実行すると、以下のようになった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?