画像が流れてこない

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

画像が流れてこない

#1

投稿記事 by 卒業したい » 14年前

毎回すみません・・・
このプログラムを見ていただけますか?

コード:

 #include "DxLib.h"
 
int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[256]){
    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 CheckStateKey(unsigned char Handle){
	return Key[Handle];
}


//----------------------------------------------------
int haikei[10];//色のハンドル------------------------------------------------
void gazou1(){//これは背景画像ーーーーーーーーーーーーーーーーーーーーーーーー
haikei[0]=LoadGraph("kop3.png");
haikei[1]=LoadGraph("ue1.png");
haikei[2]=LoadGraph("migi1.png");
haikei[3]=LoadGraph("hidari1.png");
haikei[4]=LoadGraph("sita1.png");
}
//--------------------------------------------------------------
int color[10];//これは色の設定-----------------------------------------------
void load(){
    color[0] = GetColor(255,255,255);//白
    color[1] = GetColor( 0, 0, 0);//黒
    color[2] = GetColor(255, 0, 0);//赤
    color[3] = GetColor( 0,255, 0);//緑
    color[4] = GetColor( 0, 0,255);//青
    color[5] = GetColor(255,255, 0);//黄色
    color[6] = GetColor( 0,255,255);//青緑
    color[7] = GetColor(255, 0,255);//紫
}//------------------------------------
 //--------------------------------------------------------------
int tama[10];//たまの画像----------------------------------------------------
void gazou2(){
tama[0]=LoadGraph("tama.png");
}
//ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#define HIT_UX 90;
#define HIT_UY 73;

#define HIT_MX 240;
#define HIT_MY 73;

#define HIT_HX 395;
#define HIT_HY 73;

#define HIT_SH 550;
#define HIT_SY 73;

#define VGOOD 8;
#define GOOD 20;
#define BAD 30;

//ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー//辺り判定
typedef struct{
	int flag;
	int knd;
}humen_t;//譜面の構造体
#define HUMEN_MAX 1000
humen_t humen[HUMEN_MAX];

void load_humen(){
	int i=0,cnt=0;
	int c;
	FILE *fp;
	fp=fopen("ue.txt","r");
	if(fp==NULL)
		return;
		while((c=fgetc(fp))!=EOF){
		if(c==' '||c=='\n')continue;
		if(c!='0'){
			humen[i].flag=1;
			humen[i].knd=c-'0';
			i++;
		}
	}
fclose(fp);
}
//テキストから譜面(0,1,2,3,4)を読み込む

typedef struct{
	int u,m,h,s;
}ch_t;
	ch_t ch;

	void chk(){
		if(CheckStateKey(KEY_INPUT_UP)==1)
			ch.u=1;
		else
			ch.u=0;
		if(CheckStateKey(KEY_INPUT_LEFT)==1)
			ch.m=1;
		else
			ch.m=0;
		if(CheckStateKey(KEY_INPUT_RIGHT)==1)
			ch.h=1;
		else
			ch.h=0;
		if(CheckStateKey(KEY_INPUT_DOWN)==1)
			ch.s=1;
		else
			ch.s=0;
	}

typedef struct{
	int flag1;
	int suchi;
	double x,y;
}bullet_t;//たまの構造体
#define BULLET_MAX 1000
bullet_t bullet[BULLET_MAX];

void huru_bullet(){
	int i;
	for(i=0;i<30;i++){	
	if(humen[i].flag==1){
		if(humen[i].knd==1){//もしhumenのkndが1に等しい時↓
			bullet[i].flag1=1;
			bullet[i].x=HIT_UX;
			bullet[i].y=480;
		}
	}}
}
//譜面のフラグとkndが1の時・・・
int tama_bullet(){
	int i;
	for(i=0;i<30;i++){
	if(bullet[i].flag1=1){
				bullet[i].y-=9;             //座標を8減らす
				DrawGraph( bullet[i].x , bullet[i].y , tama[0] ,TRUE) ;
								if(bullet[i].y < -32){      //もし画面外まで来たら
                                        bullet[i].y=480;    //初期値に戻し、
                                        bullet[i].flag1=0;   //発射フラグを戻す
                                }
                        }
               }
return 0;}


void bullet_main(){
	huru_bullet();
	tama_bullet();
}




//ループで必ず行う3大処理

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    
	if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
    gazou1();
	DrawGraph(0,0,haikei[0],TRUE);
	load();
	DrawBox( 0, 70 , 645 , 75 , color[0] ,TRUE);
    DrawLine( 90 , 0 , 90 , 480 , color[2] );
    DrawLine( 240 , 0 , 240 , 480 , color[3] );
    DrawLine( 395 , 0 , 395 , 480 , color[4] );
    DrawLine( 550 , 0 , 550 , 480 , color[5] );
    

    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
        //↑メッセージ処理   ↑画面をクリア     ↑入力状態を保存       ↑ESCが押されていない
    DrawGraph(0,0,haikei[0],TRUE);
	DrawGraph(90,0,haikei[1],TRUE);
	DrawGraph(240,0,haikei[2],TRUE);
	DrawGraph(395,0,haikei[3],TRUE);
	DrawGraph(550,0,haikei[4],TRUE);
        DrawBox( 0, 70 , 645 , 75 , color[0] ,TRUE);
        DrawLine( 90 , 0 , 90 , 480 , color[2] );
        DrawLine( 240 , 0 , 240 , 480 , color[3] );
        DrawLine( 395 , 0 , 395 , 480 , color[4] );
        DrawLine( 550 , 0 , 550 , 480 , color[5] );
    
	    bullet_main();
		ScreenFlip();
    }
	
    DxLib_End();
    return 0;
} 
今の予定では
ファイルから0か1を読み込み
flagを1にして
画像を流すというところまで
のプログラムなのですが・・・

どうにも画像が流れてきてくれません。
何故だかわかりますか?

本当に毎回聞いてしまって申し訳ありません。
誰か教えてください
よろしくお願いします。

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

Re: 画像が流れてこない

#2

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

とりあえずhuru_bullet関数に問題がありそうです。
詳しいことは分かり次第返信します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
kimuchi
記事: 163
登録日時: 14年前
住所: 東京

Re: 画像が流れてこない

#3

投稿記事 by kimuchi » 14年前

何の画像を表示したいのでしょうか?
コードを見る限りでは弾の画像だとは思いますが、明記した方が良いです。

ファイルの読み出しも怪しいですが、その前に136行目のところで
bullet.flag1=1となっていますが、bullet.flag1==1の間違いではないでしょうか?

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

Re: 画像が流れてこない

#4

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

いろいろ修正しました。
gazou2()を呼んでいないので、弾の画像がロードされていませんでした。

コード:

 #include "DxLib.h"
 
int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[256]){
    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 CheckStateKey(unsigned char Handle){
    return Key[Handle];
}
 
 
//----------------------------------------------------
int haikei[10];//色のハンドル------------------------------------------------
void gazou1(){//これは背景画像ーーーーーーーーーーーーーーーーーーーーーーーー
haikei[0]=LoadGraph("kop3.png");
haikei[1]=LoadGraph("ue1.png");
haikei[2]=LoadGraph("migi1.png");
haikei[3]=LoadGraph("hidari1.png");
haikei[4]=LoadGraph("sita1.png");
}
//--------------------------------------------------------------
int color[10];//これは色の設定-----------------------------------------------
void load(){
    color[0] = GetColor(255,255,255);//白
    color[1] = GetColor( 0, 0, 0);//黒
    color[2] = GetColor(255, 0, 0);//赤
    color[3] = GetColor( 0,255, 0);//緑
    color[4] = GetColor( 0, 0,255);//青
    color[5] = GetColor(255,255, 0);//黄色
    color[6] = GetColor( 0,255,255);//青緑
    color[7] = GetColor(255, 0,255);//紫
}//------------------------------------
 //--------------------------------------------------------------
int tama[10];//たまの画像----------------------------------------------------
void gazou2(){
tama[0]=LoadGraph("tama.png");
}
//ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#define HIT_UX 90;
#define HIT_UY 73;
 
#define HIT_MX 240;
#define HIT_MY 73;
 
#define HIT_HX 395;
#define HIT_HY 73;
 
#define HIT_SH 550;
#define HIT_SY 73;
 
#define VGOOD 8;
#define GOOD 20;
#define BAD 30;
 
//ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー//辺り判定
typedef struct{
    int flag;
    int knd;
}humen_t;//譜面の構造体
#define HUMEN_MAX 1000
humen_t humen[HUMEN_MAX];
 
void load_humen(){
    int i=0,cnt=0;
    int c;
    FILE *fp;
    fp=fopen("ue.txt","r");
    if(fp==NULL)
        return;
        while((c=fgetc(fp))!=EOF){
        if(c==' '||c=='\n')continue;
        if(c!='0'){
            humen[i].flag=1;
            humen[i].knd=c-'0';
            i++;
			if(i>=HUMEN_MAX)break;//オーバーフロー防止
        }
    }
fclose(fp);
}
//テキストから譜面(0,1,2,3,4)を読み込む
 
typedef struct{
    int u,m,h,s;
}ch_t;
    ch_t ch;
 
    void chk(){
        if(CheckStateKey(KEY_INPUT_UP)==1)
            ch.u=1;
        else
            ch.u=0;
        if(CheckStateKey(KEY_INPUT_LEFT)==1)
            ch.m=1;
        else
            ch.m=0;
        if(CheckStateKey(KEY_INPUT_RIGHT)==1)
            ch.h=1;
        else
            ch.h=0;
        if(CheckStateKey(KEY_INPUT_DOWN)==1)
            ch.s=1;
        else
            ch.s=0;
    }
 
typedef struct{
    int flag1;
    int suchi;
    double x,y;
}bullet_t;//たまの構造体
#define BULLET_MAX 1000
bullet_t bullet[BULLET_MAX];

 int flame;
void huru_bullet(){
    int i,j;
    //for(i=0;i<30;i++){
	i=flame++;
	if(i>=HUMEN_MAX)return;
    if(humen[i].flag==1){
        if(humen[i].knd==1){//もしhumenのkndが1に等しい時↓
			for(j=0;j<BULLET_MAX;j++) {
				if(bullet[j].flag1==0) {
            		bullet[j].flag1=1;
           			bullet[j].x=HIT_UX;
           			bullet[j].y=480;
		   			break;
		   		}
		   	}
        }
    }//}
}
//譜面のフラグとkndが1の時・・・
int tama_bullet(){
    int i;
    for(i=0;i<BULLET_MAX;i++){
    if(bullet[i].flag1==1){
                bullet[i].y-=9;             //座標を8減らす
                DrawGraph( bullet[i].x , bullet[i].y , tama[0] ,TRUE);
                                if(bullet[i].y < -32){      //もし画面外まで来たら
                                        bullet[i].y=480;    //初期値に戻し、
                                        bullet[i].flag1=0;   //発射フラグを戻す
                                }
                        }
               }
return 0;}
 
 
void bullet_main(){
    huru_bullet();
    tama_bullet();
}
 
 
 
 
//ループで必ず行う3大処理
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
    gazou1();
	gazou2();//追加
    DrawGraph(0,0,haikei[0],TRUE);
    load();
	load_humen();//追加
	flame=0;
    DrawBox( 0, 70 , 645 , 75 , color[0] ,TRUE);
    DrawLine( 90 , 0 , 90 , 480 , color[2] );
    DrawLine( 240 , 0 , 240 , 480 , color[3] );
    DrawLine( 395 , 0 , 395 , 480 , color[4] );
    DrawLine( 550 , 0 , 550 , 480 , color[5] );
    
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
        //↑メッセージ処理   ↑画面をクリア     ↑入力状態を保存       ↑ESCが押されていない
    DrawGraph(0,0,haikei[0],TRUE);
    DrawGraph(90,0,haikei[1],TRUE);
    DrawGraph(240,0,haikei[2],TRUE);
    DrawGraph(395,0,haikei[3],TRUE);
    DrawGraph(550,0,haikei[4],TRUE);
        DrawBox( 0, 70 , 645 , 75 , color[0] ,TRUE);
        DrawLine( 90 , 0 , 90 , 480 , color[2] );
        DrawLine( 240 , 0 , 240 , 480 , color[3] );
        DrawLine( 395 , 0 , 395 , 480 , color[4] );
        DrawLine( 550 , 0 , 550 , 480 , color[5] );
    
        bullet_main();
        ScreenFlip();
    }
    
    DxLib_End();
    return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

卒業したい

Re: 画像が流れてこない

#5

投稿記事 by 卒業したい » 14年前

画像が流れました!
色々ミスがあったんですね・・・
もっと見直してから来ます
本当にありがとうございました!

閉鎖

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