initscr

前回の、エスケープシーケンスを使っての画面制御をプログラムでやるのは大変なので、以前はcurses、現在では後継のncursesを使う。

https://www.kushiro-ct.ac.jp/yanagawa/ex-2017/2-game/01.html#curses

インストールは、

$ sudo yum install ncurses-devel
[sudo] bg1 のパスワード:
メタデータの期限切れの最終確認: x:xx:xx 時間前の xxxx年xx月xx日 xx時xx分xx秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ            アーキテクチャー
                                   バージョン                 リポジトリ  サイズ
================================================================================
インストール:
 ncurses-devel         x86_64      6.1-8.20180923.fc29        fedora      508 k
依存関係をインストール中:
 ncurses-c++-libs      x86_64      6.1-8.20180923.fc29        fedora       32 k

トランザクションの概要
================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 540 k
インストール済みのサイズ: 984 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード中です:
(1/2): ncurses-c++-libs-6.1-8.20180923.fc29.x86  15 kB/s |  32 kB     00:02
(2/2): ncurses-devel-6.1-8.20180923.fc29.x86_64 238 kB/s | 508 kB     00:02
--------------------------------------------------------------------------------
合計                                            143 kB/s | 540 kB     00:03
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
Installed: ncurses-c++-libs-6.1-8.20180923.fc29.x86_64
  インストール中   : ncurses-c++-libs-6.1-8.20180923.fc29.x86_64            1/2
Installed: ncurses-c++-libs-6.1-8.20180923.fc29.x86_64
Installed: ncurses-devel-6.1-8.20180923.fc29.x86_64
  インストール中   : ncurses-devel-6.1-8.20180923.fc29.x86_64               2/2
Installed: ncurses-devel-6.1-8.20180923.fc29.x86_64
  scriptletの実行中: ncurses-devel-6.1-8.20180923.fc29.x86_64               2/2
  検証             : ncurses-c++-libs-6.1-8.20180923.fc29.x86_64            1/2
  検証             : ncurses-devel-6.1-8.20180923.fc29.x86_64               2/2

インストール済み:
  ncurses-devel-6.1-8.20180923.fc29.x86_64
  ncurses-c++-libs-6.1-8.20180923.fc29.x86_64

完了しました!
$

こんな感じで。

今回は、画面の初期化initscr()"だけ"をやってみる。(正しい使い方でないのは承知の上。)

initscr(3) - Linux man page
curs_initscr 3x 非公式日本語訳

実行前
実行前

実行して、何も起きないと思って、何度もリターンキーを叩くと、

おかしい
おかしい

入力おかしくなる。
なので、endwin()を呼ぶべきかと。

Sample/ncurses/initscr/initscr/src/initscr at master · bg1bgst333/Sample · GitHub