Bashでのネットワーク海戦

最近、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対応するセクションが「パラメーター拡張」と呼ばれていることを説明できます。

Source: https://habr.com/ru/post/J80122/


All Articles