引用元:https://www.ioccc.org/2012/dlowe/dlowe.c
審査員・作者による説明:https://www.ioccc.org/2012/dlowe/hint.html
動作
ライフゲームをネタにしたX11ゲーム。
$ gcc -o dlowe dlowe.c -lX11
$ ./dlowe
起動するとタイトル画面。このタイトルロゴはライフゲームのルールで崩れていく。
キーを押すとゲームが始まる。
画面右の真ん中あたりにある小さい宇宙船が自機。
自機が勝手に右に進む(画面全体が左にスクロールしていく)。
上下キーで自機を操作し、ライフゲームに従って変化する障害物を避け続ける。
ぶつかったらゲームオーバー。
スピードは徐々に速くなっていく。
解説
hint.textに書かれた”B3/S23”は、ライフゲームのルールを表す符号。
B3は「周囲3セルが生きていたら生まれる(birth)」、S23は「周囲2セルか3セルが生きていたら生き残る(survive)」の意味。
コード形状はライフゲームの配置で、19世代でグライダーになるパターンとのこと。
難読化としては、たくさんのグローバル変数、違う意味での使いまわし、同じ識別子をstruct
のメンバでも使う、三項演算子や優先順位の悪用、マジックナンバーの多用などとのこと。