はじめまして、こちらのサイトのライブラリを使用させていただいている者です。
さっそく質問なのですが、下記のコードを実行させるとLoadDivGraphのところでCPUの使用率が50%になってしまい、画像を表示させるところまでいきません。
前に組んだ、他のプログラムでは下記で読み込んでいる画像は表示されたので、画像に問題はないと思われます。
一体原因は何なのでしょうか??
コンパイラはVisualC++ 2005 Express Edtionです。
よろしくお願いします。
/* Gasha2Info.h */
#include "DxLib.h"
#include <new>
using namespace std;
#define SCREEN_W 800
#define SCREEN_H 450
#define SCREEN_P 8
enum MainCharDir
{
Backward = 3,
Right = 6,
Forward = 9,
Left = 12
};
class BaseCharacter
{
public:
//画像ハンドル
int gHandle[12];
//描画するときの座標
int drawPosX;
int drawPosY;
//中心座標
int centerPosX;
int centerPosY;
int weight;
int direction;
//コンストラクタ
BaseCharacter(char *media, int width, int hight, int drawX, int drawY, int weight)
{
//座標類初期化
Initialize(width, hight, drawX, drawY, weight);
//画像取得
LoadDivGraph(media, 12, 3, 4, 24, 32, gHandle);
}
//初期化
void Initialize(int width, int hight, int drawX, int drawY, int weight)
{
drawPosX = drawX;
drawPosY = drawY;
centerPosX = drawX + (width / 2);
centerPosY = drawY + (hight / 2);
this->weight = weight;
direction = Forward;
}
//描画
void Draw()
{
static unsigned int cnt = 0; // アニメーション用
int ptn;
// 描画する
ptn = cnt / 10 % 3;
DrawGraph(drawPosX, drawPosY, gHandle[ptn + direction], TRUE);
}
};
/* main.cpp */
#include "Gasha2Info.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//テクニック用
LONGLONG timeCount;
//終了フラグ
bool breakFlag = false;
//キャラクターの生成
BaseCharacter *b;
try
{
b = new BaseCharacter("media/kokeshi.png", 72, 128, 0, 0, 60);
}
catch(bad_alloc)
{
MessageBox(NULL, "死んだ", "いんふぉめーしょん", MB_OK);
return -1;
}
// ウィンドウタイトル
SetMainWindowText("ガシャガシャ ver0.2");
//ウィンドウサイズ
if(SetGraphMode(SCREEN_W, SCREEN_H, SCREEN_P) != DX_CHANGESCREEN_OK)
exit(-1);
//ウィンドウモード
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
//ゲーム本体(終了フラグが立つまでループ)
do
{
// テクニック:同期用
timeCount = GetNowHiPerformanceCount();
// 画面に描かれているものをすべて消す
ClearDrawScreen();
// 点を打つ
//DrawPixel(400, 225, 0xffff);
//キャラクターの描画
b->Draw();
// 裏画面の内容を表画面に反映させる
ScreenFlip();
if(ProcessMessage()==-1) exit(-1);
if(CheckHitKey(KEY_INPUT_ESCAPE))
{
int exitCheck = MessageBox(NULL, "続ける??", "いんふぉめーしょん", MB_YESNO);
if(exitCheck == IDNO)
breakFlag = 1;
}
// テクニック:どのマシンでも60Hzで動作させる
while(GetNowHiPerformanceCount() - timeCount < 16667)
if(ProcessMessage() == -1) break;
}while(!breakFlag);
//キャラクター解放
delete b;
// DXライブラリ使用の終了処理
DxLib_End();
// ソフトの終了
return 0 ;
}