Best collaborative graphics

もっとも協力的なグラフィックス

受賞者:Etienne Duble

引用元:https://www.ioccc.org/2019/duble/prog.c

審査員・作者による説明:https://www.ioccc.org/2019/duble/hint.html

動作

ターミナルでのお絵かきツール。 同じ画面を複数人で編集できる。

1つめの端末で次のように実行する。

$ gcc -Dg=11 -Ds=0 -DV=24 -DW=80 -o prog prog.c

$ ./prog /tmp/drawing
起動画面
図:起動画面

操作は次の通り。

線モードで直線を引く様子。

青い直線を引く様子
図:青い直線を引く様子

この画面は開いたまま、別の端末で同じコマンドを実行することで、同じセッションにジョインできる。

$ ./prog /tmp/drawing

操作方法は同じ。 どちらの編集もリアルタイムで同期される。

赤いペンで適当にカーソルを動かした様子
図:赤いペンで適当にカーソルを動かした様子

すべてのクライアントが編集終了したら、/tmp/drawingを実行することで編集結果を見ることができる。

最終的な絵が保存されている
図:最終的な絵が保存されている

解説

コード形状は、スクラッチパッドに線を書いている様子?

通信はUNIXソケットで行う。 すべて終了したときにUNIXソケットを実行ファイルに置き換えるというのは少しおもしろい。 この実行ファイルは#!/bin/catのスクリプトになっている。 ls --color /tmp/drawingをすれば、編集状態が見えるだろうとのこと(UNIXソケットか実行ファイルかで色が変わる環境が多いので)。