ページ 11

DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 16:37
by ロストフ
描画処理をやろうとしたところ、早速詰まってしまいました

コード:

#include "DxLib.h"
#include "a.h"


void Draw(); 
void Load();
int huragu=1;
int caunto=2;


// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine, int nCmdShow )
{
    
   ChangeWindowMode( TRUE ) ;
 
 
   DxLib_Init();   

 
while(!ProcessMessage() && !ClearDrawScreen()){

    if(caunto==!huragu){
         Load();
	 huragu=caunto;
    };	 
    
    Draw();   
    
    WaitTimer( 20 ) ;
 
 }     
 
    // DXライブラリ使用の終了処理
    DxLib_End() ;
 
    // ソフトの終了
    return 0 ;
}

コード:

#include "Dxlib.h"
#include "a.h" 

void Draw();
void Load();

a1 a[2]={
	{0,0,"aaa.png"}, 
        {0,0,"bbb.png"}
};


void Load(){

   for(int i=0; i<2 ; i++){
      kyara[i].hand=LoadGraph(a[i].name);
   };
 
}

void Draw(){
    
    for(int i=0; i<2 ; i++){
       
        DrawGraph(a[i].x,a[i].y,a[i].hand,TRUE);

    };	

}  
こんな簡単なコードなのですがなぜが実行結果がうまくいきません
コンパイルエラーはでないのですが画像が表示されず黒い画面のままです
自分はif文が書かれている部分がおかしいのかなと思ってのですが分かりません
画像データがある位置はデバッグファイルの中なのであっていると思うのですが

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 16:45
by hidden
環境とかどう実行したのかとか書いてくださいね。
環境が明記されていないので断言できませんが
VC++の環境上からの実行でそのパスならプロジェクトのあるフォルダに入れてください。

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 16:53
by Sigma
まずコードそれぞれのファイル名が記述されてないと正確にはわかりません。
おそらくはaという名で宣言してるのにkyaraという名で参照してるからだと思いますが…

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 16:58
by softya(ソフト屋)
VC++なら[プロジェクト名].vscprojのあるフォルダにファイルを置いてください。

あと、プロトタイプ宣言の
void Draw();
void Load();
もa.hに書いたほうが良いと思います。

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 17:30
by ロストフ

コード:

#include "DxLib.h"
#include "a.h"
 
 
void Draw(); 
void Load();
int huragu=1;
int caunto=2;
 
 
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine, int nCmdShow )
{
    
   ChangeWindowMode( TRUE ) ;
 
 
   DxLib_Init();   
 
 
while(!ProcessMessage() && !ClearDrawScreen()){
 
    if(caunto==!huragu){
         Load();
     huragu=caunto;
    };   
    
    Draw();   
    
    WaitTimer( 20 ) ;
 
 }     
 
    // DXライブラリ使用の終了処理
    DxLib_End() ;
 
    // ソフトの終了
    return 0 ;
}

コード:

#include "Dxlib.h"
#include "a.h" 
 
void Draw();
void Load();
 
a1 a[2]={
    {0,0,"aaa.png"}, 
        {0,0,"bbb.png"}
};
 
 
void Load(){
 
   for(int i=0; i<2 ; i++){
      a[i].hand=LoadGraph(a[i].name);
   };
 
}
 
void Draw(){
    
    for(int i=0; i<2 ; i++){
       
        DrawGraph(a[i].x,a[i].y,a[i].hand,TRUE);
 
    };  
 
}
一部、書き間違いがあったので訂正します(指摘してくださったkyaraのところです)

BCC Developerの場合はどうしてやるべきでしょう?

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 17:34
by softya(ソフト屋)
『Debug』というフォルダで合っていると思いますが、実行時に書かれるLog.txtを確認してみてください。

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 17:47
by みけCAT

コード:

if(caunto==!huragu){

コード:

if(caunto!=huragu){
の間違いではないでしょうか?

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 18:37
by ロストフ
〉〉みけCATさん
まさにその通りでした 提示された部分を変えたらうまくいきました
自分はこの値とこの値が一緒じゃなかったらという意味で
比較演算子を使うんじゃないかなぁと勝手に決めつけていたのですが
なぜ代入文?なのでしょうか?それはそういうものと割り切った方がいいでしょうか?

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 18:51
by softya(ソフト屋)
!=は代入演算子じゃなくて関係(比較)演算子です。
「C++_演算子」
http://www.geocities.jp/cbc_vbnet/vc/enzan.html

たとえば、
int huragu=1;
int caunto=2;

caunto==!huragu
だと!が論理演算子なので
(!huragu)で0になります。
つまり、
caunto==0
って聞いているのと同じですね。

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 19:14
by ロストフ
皆様、ありがとうございました
おかげでなんとか初歩を解決できました
今回、学んだことは生かしていきます

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 19:16
by ロストフ
もう一回、質問
背景にでかい絵をどんとおきたいのですがウインドウサイズ?は何ドット×何ドットですか?

Re: DXライブラリ描画の仕方

Posted: 2011年9月26日(月) 19:19
by softya(ソフト屋)
DXライブラリのデフォルトは、640x480だったはずです。
自分で好きなサイズに変えることも出来ます。