引用元:https://www.ioccc.org/2001/ctk.c
審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/2001/ctk.hint
動作
ドライビングゲーム。
$ gcc -o ctk ctk.c
$ ./ctk
\ \
\ \
\ \
\ \
\ \
\ \
%%% \ \
%\|/% \ \
| \ \
| \ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
| |
%%% / /
%\|/% / /
| / /
| / @ /
/ /
/ /
@
が自分。bで左に進み、mで右に進み、nでまっすぐに戻す。
1、2、3、4、でギアを変える(4が最速)。
道から外れたらゲームオーバー。なお、道は徐々に細くなっていく。
解説
Apple IIのPrint Shop Companionに入っていた”DRIVER”というイースターエッグを真似たゲームとのこと。
当時とエスケープシーケンスの意味が変わっているようで、動かすのには苦労した。
現代ではCSI sequenceはESC [
の2文字だが、当時は0x9fの1文字でもよかったらしい(現代ではUnicodeに乗っ取られている)。
また、一行挿入するシーケンスがカーソルのカラム位置を変化させない前提があるようだが、現代では左端に戻ってしまうので、調整した。
Linux consoleには独自のエスケープシーケンスがあるそうで、これを活用している。
ESC [ 10 ; n ]
でビープ音の周波数を変えることでギアに合わせたビープ音を鳴らしたり、ESC [ n q
でギアに合わせてNum LockやCaps Lockなどのランプを光らせたりする機能もあるとのこと。
どちらも再現できる環境がないので動作未確認。
パッチ
パッチをダウンロード