引用元:https://www.ioccc.org/2020/ferguson1/prog.c
審査員・作者による説明:https://www.ioccc.org/2020/ferguson1/index.html
動作
snake game。
$ gcc -D_XOPEN_SOURCE -D_POSIX_C_SOURCE -D'f(a,b)'='((a)<(b)?(a):(b))' -DWALL='COLOR_CYAN' -DHEAD='COLOR_RED' -DBODY='COLOR_GREEN' -DWB='COLOR_BLACK' -DHB='COLOR_BLACK' -DBS='COLOR_BLACK' -DBG='COLOR_WHITE' -DBB='COLOR_BLACK' -o prog prog.c -lcurses
$ ./prog
<
が蛇の頭(向きによってキャラクタが変わる)。上下左右で移動、スペースでポーズと再開、qで終了。
*
が虫で、これを餌として集める。
解説
環境変数でいろいろな設定が可能。
WALL=0
としたら、壁に当たると死ぬ(デフォルトではトーラスになっている)
CANNIBAL=0
としたら、自分自身に当たっても死ななくなる(デフォルトでは当然死ぬ)
SHED
だけ動くごとにSHEDS
だけ胴体が伸びる
- 胴体の長さの初期値は
SIZE
、MAXSIZE
まで伸びたら勝利(SIZE=-1
とすれば即時に勝利)
WAIT
を小さくするとすべてが速くなる
EVADE
を小さくすると虫の位置が変わるスピードが速くなる
ドキュメントがとんでもなく長い。
$ wc *.markdown COMPILING HACKING HISTORY README
293 2657 14817 bugs.markdown
170 1067 6293 chocolate-cake.markdown
773 4555 34107 gameplay.markdown
52 150 1161 judges.markdown
773 4555 34107 remarks.markdown
890 7762 42421 spoilers.markdown
328 1955 11850 terminals.markdown
409 3027 16822 troubleshooting.markdown
595 4570 27663 COMPILING
515 3643 20407 HACKING
132 1543 8186 HISTORY
148 1385 7640 README
5078 36869 225474 total
コード形状は、遊んでいたらなんとなくできたパターンらしい。
全体の行数やブロックの行数が素数になっている。
賞名は、アメリカの昔の軍人クリストファー・ガズデンがデザインしたアメリカ軍旗(ガズデン旗)に基づく。