もう少し考えて投稿するべきでした。すみませんでした
ソースコードは、
#include "DxLib.h"
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int button(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
for (int i = 0; i<256; i++){
if (tmpKey[i] != 0){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
}
else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
ChangeWindowMode(TRUE), SetDrawScreen(DX_SCREEN_BACK);
int Font, PX, P = 0, Plus[3] = { 0, 0, 0 };
int handle=LoadGraph("画像/色テス.png");
Font = CreateFontToHandle("HG創英角ポップ体", 72, 0, DX_FONTTYPE_ANTIALIASING);
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && button() == 0)
{
DrawGraph(0, 0, handle, 0);
PX = 19 * 10;
if (Key[KEY_INPUT_RIGHT] == 1){
P++;
if (P >= 3) P = 0;
}
if (Key[KEY_INPUT_LEFT] == 1){
P--;
if (P <= -1) P = 2;
}
if (Key[KEY_INPUT_UP] == 1){
Plus[P]++;
if (Plus[P] >= 256)Plus[P] = 255;
}
if (Key[KEY_INPUT_DOWN] == 1){
Plus[P]--;
if (Plus[P] <= -1)Plus[P] = 0;
}
if (Key[KEY_INPUT_UP] >= 31){
Plus[P]++;
if (Plus[P] >= 256)Plus[P] = 255;
}
if (Key[KEY_INPUT_DOWN] >= 31){
Plus[P]--;
if (Plus[P] <= -1)Plus[P] = 0;
}
DrawFormatStringToHandle(41, 332, GetColor(255, 0, 0), Font,"R:%d",Plus[0]);
DrawFormatStringToHandle(41 + PX, 332, GetColor(0, 255, 0), Font, "G:%d",Plus[1]);
DrawFormatStringToHandle(41 + PX * 2, 332, GetColor(0, 0, 255), Font, "B:%d",Plus[2]);
DrawBox(41+190*P, 405, 231+190*P, 415, GetColor(255, 255, 255), 1);
DrawBox(49, 49, 287, 287, GetColor(Plus[0], Plus[1], Plus[2]), 1);
}
WaitKey(); // キー入力待ち
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
こんな感じで、GetColor関数のテスターです。
龍神録では、このようなことは起きませんでした。また、
自分が作ったアプリでも、症状があるものとないものがあります。
OSはWindows7、64bitで、Microsoft Visual Studio Express2013 for Windows Desktopを使っています。