4

次の質問に対する回答は、C / C ++、C#、またはPythonの場合があります。可能であればクロスプラットフォームで回答したいのですが、おそらく必要になると思いますconioncurses

  1. 色付きのテキストを出力するにはどうすればよいですか?
  2. ターミナルの特定のスペースに特定のものが「描画」される ようなGUIをどのように実行しますtopか?nethack

可能であれば、小さなワンライナーのコード例がいいでしょう。

4

5 に答える 5

4

はい、これらは VT100 エスケープ コードです。最も簡単なのは、Curses のフレーバーを使用することです。呪いのフレーバーを選択したら、1 と 2 の両方を行うのは非常に簡単です。

ncurses の HowTo を次に示します。

http://web.cs.mun.ca/~rod/ncurses/ncurses.html

于 2009-02-26T00:54:26.757 に答える
1

ほとんどのターミナルウィンドウは、色付け、カーソル移動などを可能にするANSIエスケープシーケンスを理解しています。それらのリストはここにあります。

これらのシーケンスの使用は少し「古い学校」のように見えるかもしれませんが、呪いが実際に適用できない場合に使用できます。たとえば、bashスクリプトで次の関数を使用して、エラーメッセージを赤で表示します。

color_red()
{
    echo -e "\033[01;31m$1\033[00m"
}

次に、次のように言うことができます。

color_red "something has gone horribly wrong!"
exit 1
于 2009-02-26T00:53:24.217 に答える
1

この観点から見ると、コンソールは多くの点で、従来の端末デバイスのエミュレーションにすぎません。Curses はもともと、さまざまな端末タイプで共通の操作を行う方法をサポートするために作成されました。この場合、使用中の実際の端末は、ログイン シーケンスの一部としてユーザーが選択できます。その遺産は今日も ncurses として生き残っています。

ncurses ライブラリは、カーソルを直接配置してテキストを出力するために呼び出す関数を提供します。これは、Windows コンソール (CMD.EXE が実行される場所) や、XTerms などのさまざまな *nix プラットフォームで動作することが知られています。あなたがそのようなものを持っていれば、それはおそらくシリアル回線を介して真の12月のVT100でも動作します...

VT100 以降のモデルで認識されたエスケープ シーケンスは、ANSI 標準端末の基礎となりました。しかし、あなたは本当にそれについて知る必要はありません. ncurses を使用すれば、その必要はありません。

conio に依存してもクロスプラットフォームにはなりません。これは DOS/Windows 固有の API であるためです。

編集: ncursesライブラリ自体は、少なくとも Google で調べてみると、 mingwで簡単に構築できないようです。ただし、ncurses は元のcursesライブラリの子孫の 1 つにすぎないため、すべてが失われるわけではありません。

もう 1 つはPDCursesで、Windows コンソール、X11 およびさまざまな *nix プラットフォームでコンパイルおよび実行できることが知られています。

(ウィキペディアで参照を追跡していて、curses は nethack の祖先であるゲームローグの作成から生まれたことを思い出しました。そのコードの一部は、vi エディターのカーソル管理モジュールからも「借用」されました。アイデアのnethack ソース キットでは、まったくクレイジーなアイデアではない可能性があります...)

于 2009-02-26T00:56:19.780 に答える
0

クロスプラットフォームではありませんが、Windows / C# カラーについては、参照してください

コンソール テキストに色を付ける (C#)

c++

于 2009-02-26T00:55:32.213 に答える
0

C# では、Console.ForegroundColor プロパティと Console.BackgroundColor プロパティをそれぞれ使用して、テキストの色と背景色を設定できます。有効な色の一覧については、このMSDN docを参照してください。

于 2009-02-26T00:57:00.340 に答える