作ったもの。
map命令のremap
前回の記事では
map ([x=0, y=0], [w=30, h=17], [sx=0, sy=0], [colorkey=-1], [scale=1], [remap=nil])
のremap
に関して「remap は‥‥こおるばっく関数??(便利らしいのですがサンプルも見つけられず使い方が分かりませんでした)」と書いてしまいましたが(なんとなく)わかりました。
ありがとう TIC-80 wiki!(および回答者様)
ありがとう google翻訳!
要は 引数に(tileid [,x,y])
「 mget(x,y)
で取得できるタイル番号 tileid 」を取って、
返り値tile [,flip [,rotate] ] ]
を返すような関数をセットしておけば、
mapデータはそのままで表示のみ返り値の tile のタイルを表示してくれるということでした
(いやそう書いてあったのですが理解力がなくて情けない)
なるほど、これを使えば(タイムなどのグローバル変数を参照して)タイルをアニメーションさせたりmget(x,y)
と合わせて近傍のセルをチェックして(リアルタイムではないが)オートタイルっぽいこともできると。
境界線付きデータもわざわざデータに書き込む必要はないということです。
remap(命令に渡す関数)を使ってみよう
オートタイルもどきに使ってみようかなと思ったのですが、データを書き換えずに表示のみ変更って
他の何かに使えないかな?と考えたとき、「ライフゲーム」を思い出しました。
昔からありますし、世間でもQiita内でもときどき記事があがっているようですね。(今色々読んでます)
適当に実装してみた後、自分は確かMSXに打ち込んで試したのが最初だったかな?と思って検索したら、
なんと作者様のページが!!
うおー感動だー。プログラムリストも載ってるー。しかも一画面プログラムだ!
(まあ当時記憶媒体もないので1画面プログラムぐらいしか入力できなかった)
1988年‥‥自分も年を取るはずだぁ
プログラムを読んだ感想ですが、リスト内の「そそりだくAAOOEE」が印象的でした。
あ、いや濁点「 ゛」ではなくてチルダ「~」かな、それと「く」ではなくて不等号「<」かな?
‥‥いやほんと分からないんです、マシン語をかなり使ってるので。
BASIC部分はまだそうでもないのですが(かなり怪しいですが)、マシン語部分はさっぱりです。
と、とりあえず TIC-80 のエディタの一画面(40x17文字)でできるかやってみようと書いたのが
冒頭のプログラムです。
以下改行やインデントを入れて載せます。
X,Y,W,H,SF,SP,num=0,0,240,136,60,4,1
ng={}
for r=1,H do
ng[r]={}
end
function rm(t,x,y)
local n=0
for ox=-1,1 do
for oy=-1,1 do
n=n+mget(x+ox,y+oy)
end
end
if t==0 then
t=(n==3)and 1 or 0
else
t=(n==3 or n==4)and 1 or 0
end
ng[y-Y+1][x-X+1]=t
return t
end
ct,sx,sy=SF,-720,-408
map(X,Y,W,H,sx,sy)
function TIC()
if ct==SP then
map(X,Y,W,H,sx,sy,-1,1,rm)
end
ct=ct-1
if ct==SP//2 then
print(num)
for r=1,H do
for c=1,W do
mset(X+c-1,Y+r-1,ng[r][c])
end
end
end
sy=sy+(btn(0)and 4 or btn(1)and -4 or 0)
sx=sx+(btn(2)and 4 or btn(3)and -4 or 0)
if ct==0 then
ct=SP
num=num+1
end
end
コード圧縮技術(?)は特に使っていません(知識も技術もない)が普通に一画面に収まりました。
変数名を短くしたり、後は論理演算子を用いた三項演算子っぽい書き方を利用したくらいですかね。
後で少し調べてみましたが、コード圧縮の技術も色々あるようです。
「なるほどー」と思うものや「何いってだこいつ(理解できない)」など様々です。
まあ、タイルデータや配置処理、さらに音まである(!)元プログラムとは比ぶべくもないのですが。
横8ドットで2色という制限のなかできれいに見えるセルはすごいなあと本当に感心してしまいます。
(geocitiesが近々終了するらしいですが残ってほしいです)
「Qiita」もなかなか生き残るな(笑
このような感じで自分でドットをポチポチ打って、ペタペタ配置して
さっと実行できて1ボタンでgif動画にもできる(しかも無料)「TIC-80」は
すばらしいと思うのですが皆様もいかがでしょうか!
(日本語の情報が少ないのです、助けてください)