2012-01-24 19 views
0

シンプルなゲームで「色の変数」を設定しようとしていますが、色を設定したタイルの背景を作成したいので、javaのCOLOR.blueをC++で使用できるかどうか疑問に思っていました。JavaのようなCOLOR.whateverに相当するC++はありますか?

+6

C++には「色」または「ゲーム」という概念はありません。あなたは特定の図書館について話していますか? –

+0

私は彼がJavaクラス・ライブラリのColorクラスを意味すると考えています:http://docs.oracle.com/javase/7/docs/api/色を探してください – joergl

+2

言語レベルでJavaには色の概念はありません。これは標準ライブラリの一部であるawtライブラリの一部ですが、言語自体の一部ではありません。 C + +では、これはあなたが使用するGUIライブラリに依存します - これはプラットフォームに依存するので、AFAIKでは標準のものはありません。しかし、QTやGTKのようによく使われるものがいくつかあります。 – Thomas

答えて

1

あなたはより良い色の名前を忘れて、ちょうどintead進値を使用します。

Uint32 blue = 0x0000FF; 

それとも、アルファチャンネルを使用する必要がある場合:そのような色を扱うことが

Uint32 blue = 0x880000FF; // ~50% transparent blue 

ははるかに簡単、特に場合あなたはHTMLコーディングに精通しています。

+1

うん、右、RGBA8888は唯一の色ですそこにフォーマットしてください。 – n0rd

+1

ええ、私はいつも '黄色 'よりもはるかに分かりやすい' 0xffff00'を見つけました。 – Voo

+0

@ n0rd、おそらくええ、あなたがパレットを使っているなら、あなたは明らかにこの方法を使わないでください。 – Rookie

0

QtにはQColorクラスがあり、Qt :: redのような定義済みの色があります。

+0

これは私の探しているものに似ていますが、qtライブラリを使用していないだけです。openGLとSDL –

0

いいえ(とにかく標準のC++ライブラリにはありません)、あなたは自分で書き込むことができます。もちろん

enum Colour{ 
    RED, 
    BLUE, 
    GREEN 
}; 
Colour myColour = RED; //Colour::RED is non-compliant with the C++ standard... which led to the discussion below. 

あなたもまあ、それが楽しいように聞こえる...それは複雑にし、様々なもののためのコンパレータを構築し、色とアルファチャンネルなどを分割することができます!私自身もそれをやることがあります! :P

+0

あなたのコードスニペットで使用したC++ですか? – n0rd

+0

@ n0rd何が問題なのですか?私にはうまく見えますが、私はそれをコンパイルしていません。アイデアを説明するためにそれを使用するだけです。 – Dennis

+1

C#のように見えますが、確かにC++に似ていません。 – n0rd

4

これは、使用しているプラ​​ットフォームとフレームワークによって大きく異なります。たとえば、あなたが開いたGLを使用しているとき、あなたはRGB/RGBAカラーを格納するための4 LEST方法で持って、それらは次のとおりです。

int rgb[3]; // 0-255 
int rgba[4] 
float rgb[3];// 0.0f - 1.0f 
float rgba[4]; 

だから、フロートを修正するためのポインタを返します。独自の静的クラスを作成する必要があります/ intシーケンス。 textureを作成するときは、さらに多くのオプションがあります(形式とタイプを参照)。

あなたは色も異なる動作し、あなたができるWindows CMDを使用している:

#define COLOR_RED 16 

をだからあなたの質問に答えるために:いいえ、C++が均一に色を処理するために、どのような方法を提供していませんが(なぜなら、多くのフレームワークはC++を使用して実行され、それぞれに独自のカラー構造があります)、自分で簡単にカラーアクセスを構築する方法はいくつかあります(Qtなどのいくつかのフレームワークでこのオプションを提供しています)。

+0

これは私に必要なものですありがとう –

+0

あなたは別の答えを受け入れたのはなぜですか? :) –

+0

@Cygal私は<真面目な顔>のようでしたが、その後私は寛容でした。 (彼はこの答えを最初に答えにしたが、彼は彼の心を変えた)。私はこれがあなたの問題の最も簡単な解決策を見つけることであると思っています。これは 'Uint32 blue'(これは私が拳で考えなかった)です。実際、OpenGLは 'Uint32'形式のバイトを' ARGB'カラーフォーマットの 'GL_UNSIGNED_BYTE'として受け入れることができます(しかし、' RGBA'を使うつもりですが、 'glColor3dv、glColor3d、glColor4d 、glColor4dv'。 – Vyktor

関連する問題