読者です 読者をやめる 読者になる 読者になる

wonderflで100行で全方位シュー

ActionScript3 フリーゲーム作製

Arena Shooting in 100 Lines | Si+

面白そうなので自分も作ってみた.
大元は,@24さんの100行でゲームっぽいものを作ってみた
これに,ABAさんがActionScript100行でゲームを作れActionScript100行ゲー2つめ
さらに,shinichiro_hさんが兼雑記 - 100行ゲー


一概に100行と言っても各者各様で解釈が難しいので,とりあえず,The 25-Line ActionScript Contest をwodnerfl風味にアレンジしてみた.
25Lines Flash Contest のルールは,大雑把書くと,

1) ";","{" 後は改行.
2) ただし,for/while/do-while/if/else/function の内部処理が1Lineの場合に限り,1行で書いて良い.
3) for文の初期化/判定/イテレータ処理は1個だけ.
4) ByteArrayでswfの埋め込み,Array/Object代入による処理羅列,function.applyチェーン等は,禁止しないけどヒンシュクを買うよ.

こんな感じ.
これにwonderfl的な見易さも,多少加味して,

5) "}"も改行.
6) インデントは4文字,1行120文字以内.1Line内で改行する場合,1インデント下げる.

を追加した.@24さん,ABAさんより少し厳しく,shinichiro_hさんより少し甘い感じ.
25Line Contest 見てると,4)に対してかなり挑戦的なコードがぼちぼち見受けられる.そりゃ投票する時にわざわざ全コードトレースしてられ無いし,そもそも圧縮されてるので死ぬほど読みづらい.そこら辺はちゃんと議論してるんだろんけど,Forumまでは覗いて無いので判らない.そういう点で6)の文字数縛りは重要なんじゃないかなと思う.


実際には,100行といいつつ,

package {
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.text.*;
    import flash.geom.*;
    [SWF(width = "465", height = "465", frameRate = "30", backgroundColor = "#ffffff")]
    public class main extends Sprite {
        function main() {
        }
    }
}

と,一通り書くだけで12行持ってかれるので,実質88行で実装することになる.さらに,必ず3インデント下がるため,実質1行108文字制限になる.あと,ルール5)で各関数/分岐/ループにつき2行消費される.どれだけルール2)を適用できるかが勝負になるけど1行108文字制限.
んーーー.自分でルール設定しといて何だけど,これはちょっとシビア過ぎる気がするなー.ArrayやObjectによる羅列こそ使ってないけど,ローカル変数の初期化による連続処理という反則スレスレの方法で誤魔化しつつ,強引に収めた感は否めない.あと"rotation"プロパティが文字数的にライバル.
とは言え,今回,一応,一通りのアリーナシューっぽいのは出来たので,やってやれない事は無い範囲なんだろうなー,という感想.


こういうのを見てると,wonderflは本当にいい感じにオンラインベーマガしていると思う.ただ,やっぱり,過去作品へのリンクが貧弱だなーと感じた.@24さんの作品はチェックしてたけどファボって無かったので,ABAさんの日記にリンクが張って無かったら,多分辿り着けなかった.というか,リンクに気づくまで,かなり探したし.