HSPTVブラウザが無い方へEXE版を用意しました
デバッグ用のソースから作成した粗末なものです。「HSP知らない。カゴメってどんなの?」という方は、遊んでもらえると嬉しいです。
- Kagome ver1.1(kagome11.zip 95.3 KB)
- Kagome ver1.0(wa_1023.hsp) 1年経ったのでこっそりとソースを公開。
データ表現
ブロックのデータを二進数で表現する
当初は罫線ブロックの判定をS-JISコード順(━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫┻ ╋)に1〜11を割り当てて管理してました。しかしファイルサイズが応募規定の6000byte近くなったので、2ビット表現を使うようにしました。右,下,左,上の順に1,2,4,8を割り当て罫線ブロックの線と対応させ、回転処理や描画処理さらに消去判定処理を大幅にダウンサイズ(5800byteから3800byteに)する事が出来ました。
回転処理
上記の通りだったので以下のコードを書いていました。
// 左クリック(時計回り) if keybuf&256 { if block(x,y)=1 { block(x,y)=2 ; ━ → ┃ } else : if block(x,y)=2 { block(x,y)=1 ; ┃ → ━ } else : if block(x,y)=3 { block(x,y)=4 ; ┏ → ┓ } else : if block(x,y)=4 { block(x,y)=5 ; ┓ → ┛ } else : if block(x,y)=5 { block(x,y)=6 ; ┛ → ┗ } else : if block(x,y)=6 { block(x,y)=3 ; ┗ → ┏ } }
これではif..else文と配列アクセス(dup命令でも回避できた)に容量が取られていたので、どうにか1つの式で表現できないものかと考えました。