DXlib 二つの画像表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
よういち

DXlib 二つの画像表示

#1

投稿記事 by よういち » 4年前

DXlibを使用して、二つの画像を表示させたいのですができません、どうすればいいですか?

コード:

// ジャンプ
#define migi 0
#define hidari 1
#include "DxLib.h"
 int PlayerX , PlayerY , Player2X , Player2Y;
double JumpPower ,JumpPower2;
int PlayerGraph,PlayerGraph2;
int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    SetGraphMode( 800 , 600 , 16 ) ;
	ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
	
	PlayerGraph2 = LoadGraph( "teki.png" ) ;
    PlayerGraph = LoadGraph( "images/hito.png" ) ;
	
	//自分の初期データをセット
	Player2X = 50 ;
	Player2Y = 100 ;
	JumpPower2 = 0 ;
	
	// キャラクターの初期データをセット
	PlayerX = 0 ;
	PlayerY = 568 ;
	JumpPower = 0 ;
	
	


	
	
	while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない
 
 // キー入力取得
		Key[256] = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;

		if( Key[ KEY_INPUT_UP ]  >= 1) Player2Y -= 20 ;		// 上を押していたら上に進む
		if( Key[ KEY_INPUT_DOWN ] >= 1 ) Player2Y += 3 ;	// 下を押していたら下に進む
		if( Key[ KEY_INPUT_RIGHT ]  >= 1 ) Player2X += 3 ;	// 右を押していたら右に進む
		if( Key[ KEY_INPUT_LEFT ]  >= 1 ) Player2X -= 3 ;	// 左を押していたら左に進む

		// 落下処理
		Player2Y -= JumpPower ;

		// 落下加速度を加える
		JumpPower2-= 0.5;
		
		// 落下処理
		PlayerY -= JumpPower ;

		// 落下加速度を加える
		JumpPower -= 0.5;

		

		// もし地面についていたら止まる
		if( Player2Y > 568 )
		{
			Player2Y = 568 ;
			JumpPower2 = 0 ;
		}
		
		// もし地面についていたら止まる
		if( PlayerY > 568 )
		{
			PlayerY = 568 ;
			JumpPower = 0 ;
		}
		
		

		 int flag; //一度のみ宣言

		if (PlayerX==0)
			flag=migi;
		if(PlayerX==800-32)
			flag=hidari;
		if (flag==hidari)
			PlayerX-=8;
		else
			PlayerX+=8;

		
		
		
 
		// 画面を初期化する
		ClearDrawScreen() ;

		// プレイヤーを描画する
		DrawGraph( Player2X , Player2Y , PlayerGraph2 , TRUE ) ;
		// プレイヤーを描画する
		DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;
		
 
 
        ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}

アバター
みけCAT
記事: 6294
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: DXlib 二つの画像表示

#2

投稿記事 by みけCAT » 4年前

よういち さんが書きました:どうすればいいですか?
まず、

コード:

Key[256] = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
という配列の確保された範囲外にアクセスする危険なコードを消すかコメントアウトしてください。

その後、Log.txtを見たり、DrawFormatString関数などで変数や式の値を表示したりしながら原因の調査とデバッグをすればいいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
プラム
記事: 164
登録日時: 6年前
住所: 東海地方

Re: DXlib 二つの画像表示

#3

投稿記事 by プラム » 4年前

よういち さんが書きました:DXlibを使用して、二つの画像を表示させたいのですができません、どうすればいいですか?
関係ないですが、まず、

コード:

Key[256] = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
このコードを直したほうが良いと思います。

二つの画像を表示させたいというのは、どのような事ですか?

まず、どのような不具合が起きて、それをどのように改善したいかなどを言ってくださるとありがたいです。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: DXlib 二つの画像表示

#4

投稿記事 by Dixq (管理人) » 4年前

まず、ClearDrawScreen()を2か所に書いてはいけません。
http://dixq.net/g/h_11.html
これを参考にしてください。

後肝心の質問の内容が分かりません。
画像を2つ表示するだけなら
DrawGraphを2つ書けばできます。
具体的な質問をお願いします。

また、
http://dixq.net/g/
こちらを一通り読んでいただけるときれいなプログラムが書けるようになると思います。

閉鎖

“C言語何でも質問掲示板” へ戻る