クラスのメンバ関数にDrawGraph関数を使うと機能しない
Posted: 2014年9月03日(水) 10:46
はじめまして。cometという者です。
DxLibでキャラクターを動かすプログラムを作っていた所、
キャラクターをクラス化した途端うまく行かなくなりました。
具体的には、上記のコードでたいしてエラーメッセージもなく(double型 から int型の代入の警告くらい)
実行されるのですが、ウィンドウに何も表示されません。
DrawRotaGraphだけでなくDrawGraphでも、座標値を変数でなく値を決め打ちしても同じです。
どこが間違っているのでしょうか?
(UnitのメンバDrawに問題があるとは思うのですが・・・どうでしょうか?)
DxLibでキャラクターを動かすプログラムを作っていた所、
キャラクターをクラス化した途端うまく行かなくなりました。
具体的には、上記のコードでたいしてエラーメッセージもなく(double型 から int型の代入の警告くらい)
実行されるのですが、ウィンドウに何も表示されません。
DrawRotaGraphだけでなくDrawGraphでも、座標値を変数でなく値を決め打ちしても同じです。
どこが間違っているのでしょうか?
(UnitのメンバDrawに問題があるとは思うのですが・・・どうでしょうか?)
#include "DxLib.h"
#include"math.h"
#define PI 3.141592654
int im1;
int im2;
class Unit{
int place_x,place_y,angle;
bool team;
public:
Unit(int x,int y,int a,bool t);
void Draw();
};
Unit::Unit(int x,int y,int a,bool t){
place_x=x;
place_y=y;
angle=a;
team=t;
};
void Unit::Draw(){
int gx,gy;
double d=angle*PI/180;
gx=place_x+cos(PI*3/4-d);
gy=place_y+sin(PI*3/4-d);
if(team){
DrawRotaGraph(gx,gy,1,d,im1,true,false);
}
else{
DrawRotaGraph(gx,gy,1,d,im2,true,false);
}
};
void m(){
Unit aka1(100,100,180,true);
Unit ao1(200,200,0,false);
aka1.Draw();
ao1.Draw();
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
int im1=LoadGraph("unit1.png");
int im2=LoadGraph("unit2.png");
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
if( CheckHitKey(KEY_INPUT_ESCAPE) ){
break;
}
m();
ScreenFlip();
}
DxLib_End();
return 0;
}