はじめに
日本語プログラミング言語Mindの小技「コンソール制御」について説明したいと思います。
対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方
この小技に関連するMind言語マニュアル
この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載はありせん。
PureMind-KIHON-and-DOSV\KIHONSET#2\SRCLIB\SCREEN.SRCからの移植です。
本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版は未確認です。Win32コンソールAPIでVT(仮想ターミナル)モードを有効化していますが、Linuxはこの実装が不要の可能性があります。
対応バージョン
■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版
小技の解説
「コンソール制御」は日本語プログラミング言語Mind5.2の基本的なコンソールスクリーンの制御機能です。WindowsコマンドプロンプトでVT(仮想ターミナル)モードがサポートされたのはWindows10以降です。
Mind7以降のバージョンではWindows版でもコンソール制御系単語は削除されていましたので、本記事ではVTモードを有効化した後に、エスケープシーケンスによる下記のコンソール制御単語をサポートしてみます。
カーソル位置退避 (・ → ・)
カーソル位置復帰 (・ → ・)
カーソル行右側クリア (・ → ・)
画面クリア (・ → ・)
カーソル上 (・ → ・)
カーソル右 (・ → ・)
黒色切り替え (・ → ・)
赤色切り替え (・ → ・)
緑色切り替え (・ → ・)
黄色切り替え (・ → ・)
青色切り替え (・ → ・)
紫色切り替え (・ → ・)
水色切り替え (・ → ・)
白色切り替え (・ → ・)
黒色リバース切り替え (・ → ・)
赤色リバース切り替え (・ → ・)
緑色リバース切り替え (・ → ・)
黄色リバース切り替え (・ → ・)
青色リバース切り替え (・ → ・)
紫色リバース切り替え (・ → ・)
水色リバース切り替え (・ → ・)
リバース切り替え (・ → ・)
白色リバース切り替え (・ → ・)
「切り換え」も等価定義。
Mindプログラムソース
ライブラリ
※PureMind5.2互換コンソールライブラリ
※win32consoleapi.srcのVTモード有効化を実行してください。
※PureMind KIHONSET SCREEN.SRCのESCシーケンスコマンド関連単語のみ
ローカル。
色シーケンス出力とは (文字列 → ・)
"&ESC&["を 表示し
(文字列を) 表示し
'm'を 一文字表示すること。
リバース色出力とは (文字列 → ・)
"&ESC&[3"を 表示し
(文字列を) 表示し
";7m"を 表示すること。
※※※※※※ カーソル位置の設定 ※※※※※※※※※※※※※
グローバル。
カーソル位置退避とは (・ → ・)
"&ESC&[s"を 表示すること。
カーソル位置復帰とは (・ → ・)
"&ESC&[u"を 表示すること。
カーソル行右側クリアとは (・ → ・)
"&ESC&[K"を 表示すること。
画面クリアとは (・ → ・)
"&ESC&[2J"を 表示すること。
カーソル上とは (・ → ・)
"&ESC&[1A"を 表示すること。
カーソル右とは (・ → ・)
"&ESC&[1C"を 表示すること。
※※※※※※※ テキスト画面色付き文字表示 ※※※※※※※※
グローバル。
黒色切り替えとは "30"を 色シーケンス出力。
赤色切り替えとは "31"を 色シーケンス出力。
緑色切り替えとは "32"を 色シーケンス出力。
黄色切り替えとは "33"を 色シーケンス出力。
青色切り替えとは "34"を 色シーケンス出力。
紫色切り替えとは "35"を 色シーケンス出力。
水色切り替えとは "36"を 色シーケンス出力。
白色切り替えとは "0"を 色シーケンス出力。 ※あえて"37m"は使わない※
黒色リバース切り替えとは "0"を リバース色出力。
赤色リバース切り替えとは "1"を リバース色出力。
緑色リバース切り替えとは "2"を リバース色出力。
黄色リバース切り替えとは "3"を リバース色出力。
青色リバース切り替えとは "4"を リバース色出力。
紫色リバース切り替えとは "5"を リバース色出力。
水色リバース切り替えとは "6"を リバース色出力。
リバース切り替えとは "7"を リバース色出力。
白色リバース切り替えとは リバース切り替えと 等価。
黒色切り換えとは 黒色切り替えと 等価。
赤色切り換えとは 赤色切り替えと 等価。
緑色切り換えとは 緑色切り替えと 等価。
黄色切り換えとは 黄色切り替えと 等価。
青色切り換えとは 青色切り替えと 等価。
紫色切り換えとは 紫色切り替えと 等価。
水色切り換えとは 水色切り替えと 等価。
白色切り換えとは 白色切り替えと 等価。
黒色リバース切り換えとは 黒色リバース切り替えと 等価。
赤色リバース切り換えとは 赤色リバース切り替えと 等価。
緑色リバース切り換えとは 緑色リバース切り替えと 等価。
黄色リバース切り換えとは 黄色リバース切り替えと 等価。
青色リバース切り換えとは 青色リバース切り替えと 等価。
紫色リバース切り換えとは 紫色リバース切り替えと 等価。
水色リバース切り換えとは 水色リバース切り替えと 等価。
リバース切り換えとは リバース切り替えと 等価。
白色リバース切り換えとは リバース切り替えと 等価。
ローカル語を捨てる。
テスト用実行メイン
"win32consoleapi"を コンパイルする。
"consolelib"を コンパイルする。
メインとは (・ → ・)
VTモードを有効化し
0に 等しい ならば 実行終わり つぎに
画面クリアし
赤色切り換えし 「赤色表示してみました。」を 一行表示し
緑色切り換えし 「緑色表示してみました。」を 一行表示し
黄色切り換えし 「黄色表示してみました。」を 一行表示し
青色切り換えし 「青色表示してみました。」を 一行表示し
紫色切り換えし 「紫色表示してみました。」を 一行表示し
水色切り換えし 「水色表示してみました。」を 一行表示し
白色切り換えし 「白色表示してみました。」を 一行表示し
黒色切り換えし 「黒色表示してみました。」を 一行表示し
赤色リバース切り換えし 「赤色リバース表示してみました。」を 一行表示し
緑色リバース切り換えし 「緑色リバース表示してみました。」を 一行表示し
黄色リバース切り換えし 「黄色リバース表示してみました。」を 一行表示し
青色リバース切り換えし 「青色リバース表示してみました。」を 一行表示し
紫色リバース切り換えし 「紫色リバース表示してみました。」を 一行表示し
水色リバース切り換えし 「水色リバース表示してみました。」を 一行表示し
白色リバース切り換えし 「白色リバース表示してみました。」を 一行表示し
黒色リバース切り換えし 「黒色リバース表示してみました。」を 一行表示し
白色切り換えし
改行し
改行し
カーソル位置退避し
カーソル上し
カーソル上し
文字列入力し 一行表示し
カーソル右し
カーソル右し
文字列入力し 一行表示し
カーソル位置復帰し
VTモードを無効化すること。
コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。
Mind9
下図はMind9βです。
C:\developments\vscode\mind9>mind consample file
日本語プログラミング言語 Mind Version 8.11 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> consample.exe
Mind8
C:\developments\vscode\mind9>mind consample file
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> consample.exe
Mind7
C:\developments\vscode\mind9>mind consample file
日本語プログラミング言語 Mind Version 7.5 for Windows
Copyright(C) 1985-2004 Scripts Lab. Inc.
Single user license. Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> consample.exe
実行結果
つづいて実行してみます。
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。
いかがでしょうか?イメージつかめていただければ幸いです。
コンソール入力は結果のスクリーンショットだけですとわかりづらいですが、入力行位置が上に移動し、入力した後のエコー位置が移動する感じでした。
参考情報
この小技「コンソール制御」を使った記述例の記事は下記が該当します。[画面クリア]のみ。VTモード有効化のソースコードはこの記事をご参照ください。
おわりに
いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。
本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。
興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。
面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう