(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【CUI】SSHコマンドのみで2048がプレイできる

スポンサーリンク

2048とは?

『2048』は2014年3月に公開されたパズルゲーム。App StoreやGoogle Playで無料公開されており、オープンソースとされている
4×4のマスに数字が書かれたタイルがあり、スライドさせるとそれらはマスの端まで移動し、同時に新たなタイルが出現する。同じ数字のタイルがぶつかると数字が足し合わされていき、2048のタイルを作成できればゲームクリアとなる。

SSHで2048をプレイする

サーバに接続した直後に2048がはじまるように設定されているようです。
特にパスワード不要で接続できます。

投入コマンド
# ssh play@ascii.town

執筆当事ですが、以下のメッセージが出力されます。

The authenticity of host 'ascii.town (2604:a880:800:10::3a0b:9001)' can't be established.
ECDSA key fingerprint is SHA256:Td42Nu9skzncUOsgYFJIqSo4gwa3tWp4FCubN9njEmQ.
Are you sure you want to continue connecting (yes/no)? yes
プレイ画面

f:id:mtiit:20190117101036p:plain
キーボードの矢印キーで操作します。

「qキー」を押す または ゲームオーバーになると、トップスコアのユーザが表示されます。
そこで「Enterキー」などを押下すればセッションが切断された旨が表示されて元の画面に戻ります。

This program is AGPLv3 Free Software!
Code is available from <https://code.causal.agency/june/play>.
Connection to ascii.town closed.

https://code.causal.agency/june/play
上記のURLを見に行くと、Cで書かれたコードも公開されています。

main関数の頭を抜粋。

int main(void) {
	curse();
	FILE *file = scoresOpen("2048.scores");

#ifdef __FreeBSD__
	int error = cap_enter();
	if (error) err(EX_OSERR, "cap_enter");

	cap_rights_t rights;
	cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_SEEK, CAP_FLOCK);

	error = cap_rights_limit(fileno(file), &rights);
	if (error) err(EX_OSERR, "cap_rights_limit");
...

プログラミングの学習教材にいいかもしれません。

以上、ご参考ください。