最近、bashを研究する目的で、彼はネットワークでプレイするための「海戦」のゲームを書いた。 このゲームは「Sink 'em all」と呼ばれます。

外部プログラムからは、
nc
(TCPを介した対話を整理するため)、
stty
(キーが押されたときにエコーをオフにするため)、および
clear
(端末をクリアするため)のみが使用されます。
ソースコードは
ここで表示できますが、PasteBayはWindowsのスタイルで改行を挿入するため、
ここまたは
ここでダウンロードすることをお勧めします。これにより、hashbang(
#!
)を使用したインタープリターの指定が停止します。
遊び方
ソースコードをダウンロードし、ファイルの名前を
sink.sh
変更して、実行可能ビットを配置します。 その後、ゲームを安全に起動できます(または大胆に-突然悪意のあるコードが含まれていますか?)。 サーバーを起動するには、
-serve
使用します。
./sink.sh -serve
サーバーに参加するには、IPアドレスまたはドメイン名をパラメーターとして渡します。次に例を示します。
./sink.sh localhost
ゲーム中に管理についてのさらなる手がかりを受け取ります。 敵を欺くために行を入力するコード内の場所で、私はあなた自身で調べることを提案します:)
どんな役に立つことを学びましたか?
執筆の過程で、以前は知られていないbash機能と機能をいくつか発見しました。 たとえば、コプロセスなどです。 組み込みの
coproc
コマンドを使用して、コ
coproc
を作成し、
nc
と通信するために使用したいくつかのパイプを介してコプロセスと通信できます。 詳細に興味がある場合は、
help coproc
と入力するか、
man bash
「Coprocesses」セクションを
man bash
読みください。
Bashには組み込みの文字列ツールがあります。 部分文字列を別の文字列に置き換えたり、文字列の長さを計算したりするために
sed
などを使用する必要はありません。これも私にとって有用な発見になりました。 詳細に興味がある場合は、
man bash
対応するセクションが「パラメーター拡張」と呼ばれていることを説明できます。