2012-01-20 22 views
4

私はturbo C++ 3.0を使ってDOS環境で基本的なスネークゲームを作ったが、私は非常に新人だ。私は、DOSウィンドウでさまざまな色のテキストを作成する非常に単純で多分初歩的な方法をしばらく探していました。私はテキストの色付けの複雑な方法を探しているわけではありません。私が書いているほとんどのプログラムは、非常にシンプルで基本的なものであり、プログラム自体よりも大きなテキストを色づけるための複雑なコードは、紛らわしくて効果的ではありません。C/C++ DOSでテキストに色を付ける最も簡単な方法は?

私の質問は、は最も簡単なものです DOSコンソールでは、両方の言語、CおよびC++でテキストを着色する方法はありますか?

+1

1. DOSを使用していますか?それはWindowsではないと確信していますか? 2.現代のコンパイラを使用できませんでしたか?それはあなたが助けを受ける可能性を高めるかもしれません。 –

+1

@ Cody grey、時間の無駄はどうですか?私は自分のポストのどこにいても、ターボC++を習っていると言ったことはありますか?それはコンパイルされますか?はい。私は学校で使っていますか?はい。他のコンパイラと比較して私が実際に使用するのを助けてくれますか?はい。 質問とは関係のないものを投稿しないようにしてください。 – Bugster

答えて

5

あなたはターボC/C++の専用(つまり、非標準)はcprintf()cputs()putch()と一緒textcolor()textbackground()textattr()を関数を使用することができます。 IDEのヘルプの説明を参照してください。すべてはconio.hです。

+0

ありがとうございました。 – Bugster

7

enable ansi.sysの場合は、ansiエスケープシーケンスを使用できます。

私は、あなたが「DOS窓」を参照してくださいと、あなたがWindows上でDOSを使用していると仮定し、あなたは、あなたがそれを使用することができます前に、ANSI.SYSを有効にする必要があります。

Turbo C++ 3.0にはWindowsヘッダーまたはライブラリが付属していないため、コンソールAPIを使用することはできません。

2

実際にDOSを使用していますか(DOSBoxやDOSなど)

もしそうなら、ANSI.SYSは非常に使いやすいです。テキストの前には、色を設定するコントロールコードが表示されます。

ない場合は、前景色と背景色を設定するためにSetConsoleTextAttributeを使用する(すなわち、あなたが実際にWindows上でコマンド・プロンプトを使用しています)。

Windowsの32ビットバージョンはまだcommand.comをサポートしており、これはANSI.SYSをロードできることを思い出しました。

1

あなたがビデオテキストバッファに直接書き込む場合は、各文字セルの画面上にはバイトのペアに対応し、1は、表示する文字で、他はその色です。まずhttp://en.wikipedia.org/wiki/VGA_compatible_text_mode

を参照してください、それは少し困難なように見えるかもしれないが、それは実際には非常に簡単です。それはちょっと不慣れです。 ANSIエスケープシーケンスを使用するにはかなりのビット数の生成が必要ですが、テキストバッファは1文字につき1つの16ビットワードです。

これ以上は重要ではありませんが、ヴィンテージ時代のハードウェアでは、テキストバッファに書き込んで応答を変更する必要がありました。 ANSIインターフェイスを使用すると、かなりの時間がかかりました。

関連する問題