vimとかemacsとかみたいな, 仮想端末上で動くソフトウェアって, どうやって描画をしているのか気になったので調べたところ,
C言語だとcursesライブラリを使う, C#ならConsoleクラスでごにょごにょするとできるということで, 遊んでみた.
その結果がマインスイーパー
仕様
C#で書かれたコンソール画面上で動くマインスイーパー. したがって.NETのランタイム必須
行数, 列数, 地雷数を入力したら, そのあとはカーソルキー+Enterキーで座標を指定.
もちろん地雷を踏んだらゲームオーバー
画面が下にスクロールしていかない仕様. わりと本格的に見える…?
チェックしたときに周りの地雷の数が0個なら, 隣の0このマスもどばって開くアレも実装
それっぽい!すごい!
画像だと見えないけどカーソルがちゃんとアンダーバー上にあります.
CUIでも結構がんばれるんだなと思った.
アプリケーション本体のダウンロード
ソースコードのダウンロード
どのようにして実現したか
Console.Clear で画面をまっさらに
Console.SetCursorPosition でカーソル位置を指定(左上が原点)
Console.WriteもしくはWriteLineでカーソル位置を起点として文字列描画
cursesだとこれよりはめんどくさいけどいうほどめんどくさいわけでもないはず.
(開設半年にしてやっとこさ動くものをアップロードした)