基本的なプログラムの UI をより迅速に作成できるように、2D オブジェクト エディターを作成しています。私はビットマップをまったく使用していません。代わりに、ゲーム ループで関数呼び出しを使用してプリミティブを描画しているだけです。これまでのところすべて問題ありませんが、実行時にオブジェクトの色を変更する方法を知りたいです。
基本的な概念は、色に変数を使用し、ユーザーがその変数の値を変更する関数を呼び出すと、色が変更されるというものです。単純。何かのようなもの:
void runColor(){
ALLEGRO_COLOR color = NULL;
if(event.mouse.button&1)
color = al_map_rgb(255, 0, 0);
else
color = al_map_rgb(0, 255, 0);
al_draw_filled_rectangle(firstXval, firstYval, secondXval, secondYval, color);
}
残念ながら、これは機能しません。同様のコードを使用すると、オブジェクトが作成されません。コンパイル エラーも実行時エラーも何もありません。代わりに、オブジェクトに色がないため見えませんが、実際に作成されることは確認済みです。すっごくそれは、色変数がどういうわけか正しい型であることを意味すると思いますが、al_map_rgb()
その関数が返すものと等しく設定されているときの値を保持しません。何かを返さなければならないことはわかっています。そうしないと、al_draw
関数の引数にならないからです。
さまざまな描画関数につながる if else if ステートメントを書き出すこともできますが、単純であるべき何かを解決するための冗長なものの束よりも、上記のようなコードの単純な小さなバンドルを使用したいと考えています。ダクトテープに相当するコードを使用したくないだけです。
al_map_rgb()
したがって、問題はおそらくの値を返す私の仮定に関係していると確信していますがALLEGRO_COLOR
、わかりません。皆さん、何か提案をしていただけませんか?