gawk – matoken's blog https://matoken.org/blog Is there no plan B? Sun, 13 Jun 2021 15:25:56 +0000 ja hourly 1 https://wordpress.org/?v=6.8.1 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg gawk – matoken's blog https://matoken.org/blog 32 32 AWK製FPSゲームの「TERMMAZE3D」 https://matoken.org/blog/2021/06/14/termmaze3d/ https://matoken.org/blog/2021/06/14/termmaze3d/#comments Sun, 13 Jun 2021 15:20:14 +0000 http://matoken.org/blog/?p=3265

TERMMAZE3D という端末上で動作するAWK製のFPSゲームを見つけたので遊んでみました.

まずは依存コマンドを導入します.

Requirements
gawk or awk (except mawk)
GNU coreutils or equivalent BSD command (dd, echo, sleep, stty)

Linux環境ではGNU Coreutils + GNU awk,*bsd環境ではdd, echo, sleep, stty + nawk あたりでしょうか.今回はDebian bullseye 環境なのでこんな感じで.GNU Coreutils, GNU awk とリポジトリをclone するためにgit を導入します.

$ sudo apt install coreutils gawk git

source をclone します.

$ git clone https://github.com/mikkun/termmaze3d (1)
$ cd termmaze3d
$ ./termmaze3d.awk (2)
  1. TERMMAZE3Dをclone
  2. 実行

もし,実行時に真っ黒な画面になってしまう場合はawkが mawk に向いていると思うので次のページを参考にgawkに切り替えるか, $ gawk -f ./termmaze3d.awk のように gawk コマンドを直に叩くといいです.
端末サイズは80×22と比較的小さいのでフォントサイズを調整するといい感じになります.

ゲームは毎回自動生成されるマップの中を歩き回ってタイムアップする前に宝物を5つ集めるとクリアです.赤い敵が出てきますが当たるとタイムが減っていきます. k keyで攻撃したり逃げましょう.

以下プレイ動画です.


(backup)

awkでできたゲームといえば以前 awkaster というものもありました.同作者のテトリスライクなAWKTCもAWK製です.興味のある方はこれらも遊んでみるといいかもしれません.

環境1
$ git log --oneline
16e844a (HEAD -> main, tag: v1.0.0, origin/main, origin/HEAD) :tada: Initial co
$ dpkg-query -W gawk coreutils git
coreutils       8.32-4+b1
gawk    1:5.1.0-1
git     1:2.30.2-1
$ lsb_release -dr
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
$ arch
x86_64
環境2
$ git log --oneline
16e844a (HEAD -> main, tag: v1.0.0, origin/main, origin/HEAD) :tada: Initial co
$ dpkg-query -W gawk coreutils git
coreutils       8.30-3
gawk    1:4.2.1+dfsg-1
git     1:2.20.1-2+deb10u3
$ lsb_release -dr
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
$ arch
armv7l
]]>
https://matoken.org/blog/2021/06/14/termmaze3d/feed/ 1
Debian/Ubuntuでawkを切り替える https://matoken.org/blog/2021/06/10/swatch-awk/ https://matoken.org/blog/2021/06/10/swatch-awk/#comments Wed, 09 Jun 2021 22:18:56 +0000 http://matoken.org/blog/?p=3259

Debian等でのインストール直後のawkは mawk が導入されます.
Debianのパッケージでは他にGNU awk(パッケージ名 gawk ), The One True Awk(パッケージ名 original-awk )というものもあります.*BSDなどでよく見る nawk もあるように見えますが,シンボリックリンクだけのようです.
(他にもあるかもしれない?)

mawk は初期状態で入っていて軽量.GNU awk はmawkに比べて多機能で既定値では導入されませんが, byobu などが依存を求めるので入っている人も多いと思います.

複数のawkパッケージが導入されているときに awk と実行したときは update-alternatives で管理されたシンボリックリンク先のいずれかのawkが実行されます.これを切り替えてみます.

切り替え前の状態です. awk , nawkgawk(GNU awk) に向いています.

$ ls -l /usr/bin/*awk
lrwxrwxrwx 1 root root     21 May 16 00:33 /usr/bin/awk -> /etc/alternatives/awk
-rwxr-xr-x 1 root root 694624 Feb 10 17:42 /usr/bin/gawk
-rwxr-xr-x 1 root root 158296 Feb 17  2020 /usr/bin/mawk
lrwxrwxrwx 1 root root     22 May 16 00:33 /usr/bin/nawk -> /etc/alternatives/nawk
-rwxr-xr-x 1 root root 135848 Dec 22 06:24 /usr/bin/original-awk
$ ls -l /etc/alternatives/*awk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/awk -> /usr/bin/gawk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/nawk -> /usr/bin/gawk

awk コマンドを切り替えてみます.ここでは gawk から mawk にしました.

$ sudo update-alternatives --display awk (1)
awk - auto mode
  link best version is /usr/bin/gawk
  link currently points to /usr/bin/gawk
  link awk is /usr/bin/awk
  slave awk.1.gz is /usr/share/man/man1/awk.1.gz
  slave nawk is /usr/bin/nawk
  slave nawk.1.gz is /usr/share/man/man1/nawk.1.gz
/usr/bin/gawk - priority 10
  slave awk.1.gz: /usr/share/man/man1/gawk.1.gz
  slave nawk: /usr/bin/gawk
  slave nawk.1.gz: /usr/share/man/man1/gawk.1.gz
/usr/bin/mawk - priority 5
  slave awk.1.gz: /usr/share/man/man1/mawk.1.gz
  slave nawk: /usr/bin/mawk
  slave nawk.1.gz: /usr/share/man/man1/mawk.1.gz
/usr/bin/original-awk - priority 0
  slave awk.1.gz: /usr/share/man/man1/original-awk.1.gz
$ sudo update-alternatives --config awk (2)
There are 3 choices for the alternative awk (providing /usr/bin/awk).

  Selection    Path                   Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gawk           10        auto mode
  1            /usr/bin/gawk           10        manual mode
  2            /usr/bin/mawk           5         manual mode
  3            /usr/bin/original-awk   0         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ sudo update-alternatives --set awk /usr/bin/mawk (3)
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ ls -l /etc/alternatives/*awk (4)
lrwxrwxrwx 1 root root 13 Jun  7 08:27 /etc/alternatives/awk -> /usr/bin/mawk
lrwxrwxrwx 1 root root 13 Jun  7 08:27 /etc/alternatives/nawk -> /usr/bin/mawk
  1. 現在の awk の設定を確認. gawk に向いている
  2. 対話モードで update-alternatives コマンドを起動して 2mawk に設定
  3. コマンドモードの場合
  4. awk , nawkmawk に向いたのを確認.

切り替えできました. :)

ちなみに update-alternatives で管理されているコマンドの一覧は以下のコマンドで表示できます.

$ update-alternatives --get-selections
環境1(Debian sid amd64)
$ dpkg-query -W mawk gawk original-awk dpkg
dpkg    1.20.9
gawk    1:5.1.0-1
mawk    1.3.4.20200120-2
original-awk    2018-08-27-1
$ lsb_release -dr
Description:    Debian GNU/Linux 11 (bullseye) (1)
Release:        11
$ arch
x86_64
  1. 実際はsid
環境2(Ubuntu 21.04 amd64)
$ dpkg-query -W mawk gawk dpkg
dpkg	1.20.9ubuntu1
gawk	1:5.1.0-1build1
mawk	1.3.4.20200120-2
$ lsb_release -dr
Description:	Ubuntu 21.04
Release:	21.04
$ arch
x86_64
環境3(Raspberry Pi OS buster armhf)
$ dpkg-query -W mawk gawk dpkg
dpkg    1.19.7
gawk    1:4.2.1+dfsg-1
mawk    1.3.3-17
$ lsb_release -dr
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
$ arch
armv7l

]]>
https://matoken.org/blog/2021/06/10/swatch-awk/feed/ 1