22章で困っています。

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

22章で困っています。

#1

投稿記事 by 海野鯱 » 16年前

はじめまして、うみの しゃち と言います。
今回勉強のために、四聖龍神録のサンプルプログラムを打っていたのですが
22章の「ボムを撃ってみよう」のところで困ったところがでてしまったので質問させてください。
void graph_main(){
        if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);

        graph_back_main();//背景描画メイン
        graph_effect(0);//敵が死ぬエフェクト
        graph_enemy();//敵の描画
        graph_cshot();//自機ショットの描画

        if(bright_set.brt!=255)SetDrawBright(255,255,255);

        graph_ch();//自機の描画

        if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
        
        graph_bullet();//弾の描画

        if(bright_set.brt!=255)SetDrawBright(255,255,255);

        graph_effect(1);//ボムのエフェクト
        graph_effect(2);//ボム線のエフェクト
        graph_effect(3);//ボムキャラのエフェクト
        graph_board();//ボードの描画
}
graph_main関数にある、graph_effect()の()内に数字があるのですが
その数字を入れると
graph.cpp(81) : error C2660: 'graph_effect' : 関数に 1 個の引数を指定できません。
というエラーが4つ分出てきます。

ためしに()内の数字を抜いてビルドしたところ、動くのですが
添付した画像のように、弾が画面に向かってくるのみ、キャラクターは、下から上に動かず
弾が打ち終わるとパッと消えてしまうような感じです。

graph_effect関数を変えればよいのかとも思ったのですが、
どこをどう変更すればよいのかもわかりません。

ちなみに、graph_effect関数は
void graph_effect(){
	for(int i = 0; i < EFFECT_MAX; i++){
		if(effect.flag > 0){
			if(effect.eff == 1)//エフェクトが光エフェクトなら
				SetDrawBlendMode(DX_BLENDMODE_ADD, effect.brt);

			DrawRotaGraphF(effect.x + FIELD_X, effect.y + FIELD_Y, effect.r, effect.ang, effect.img, TRUE);

			if(effect.eff == 1)
				SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
		}
	}
}

こうなっています。

使っているOSはwindowsXP、コンパイラは
visual C++ 2008 Express Editionです。

どうか、お力を貸していただけないでしょうか?よろしくお願いします。

Mist

Re:22章で困っています。

#2

投稿記事 by Mist » 16年前

一括ダウンロードした22章のソースファイルでは以下のようになってますよ。
void graph_effect(int knd){
	for(int i=0;i<EFFECT_MAX;i++){
		if(effect.flag>0 && effect.knd==knd){
			if(effect.eff==1)//エフェクトが光エフェクトなら
				SetDrawBlendMode( DX_BLENDMODE_ADD, effect.brt) ;
			if(effect.eff==2)//エフェクトがαエフェクトなら
				SetDrawBlendMode( DX_BLENDMODE_ALPHA, effect.brt) ;
			DrawRotaGraphF(effect.x+FIELD_X+dn.x,effect.y+FIELD_Y+dn.y,effect.r,effect.ang,effect[i].img,TRUE);
			if(effect[i].eff==1 || effect[i].eff==2)
				SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
		}
	}
}

やそ

Re:22章で困っています。

#3

投稿記事 by やそ » 16年前

海野鯱さんの作られたgraph_effect()関数では受け取るための引数が指定されていないようです。

それじゃあ、いくら引数与えても
graph.cpp(81) : error C2660: 'graph_effect' : 関数に 1 個の引数を指定できません。
となるのは当たり前のような気がします。

Mistさんの示してくれた(館の)ソースとを元にもう一度考え(修正し)てみて下さい。

toyo

Re:22章で困っています。

#4

投稿記事 by toyo » 16年前

サイトの解説では抜けている箇所があるようなので一括ダウンロードのソースを参考にして進めていくとよいでしょう。

海野鯱

Re:22章で困っています。

#5

投稿記事 by 海野鯱 » 16年前

みなさんのおかげで直りました!
どうやら、Mistさんの指摘したところが間違っていたようです。
あと、一括ダウンロードした22章を参考にしたらほかのところも直りました!
ボムが上に行くのは、calc_effect関数の座標計算をしていたところでeffect.yを
effect.xにしていたようです;;


皆さん本当にありがとうございました!とても助かりました!

閉鎖

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