シューティング、会話での画像描写

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

シューティング、会話での画像描写

#1

投稿記事 by F » 13年前

コード:

 	前略	

            strcpy_s(story[num].type,10,token[0]);
		
		strcpy_s(story[num].name,50,token[1]);

		strcpy_s(story[num].story,256,token[2]);
		num++;
	}

	story[num].story[0]='\0';

	FileRead_close(fp);
}

void talk_disp()
{
	static int num;
	static int len;

	char buf[256];

	strcpy_s(buf,256,story[num].story);

	if(CheckStatePad(configpad.shot)==1){
		if(buf[len]=='\0')
		{
			len = 0;
			++num;
		}
	}

	if(CheckStatePad(configpad.bom)%5 == 4){
		len = 0;
		++num;
	}

	if(buf[0]=='\0'){
		num=0;
		len=0;
		func_state= 30;

		return;
	}

	for (int i=0; i<2&& buf[len] != '\0'; ++i){
		switch(buf[len]){
			case'\0':
				break;

		default:
            ++len;
            break;
        }
    }

    buf[len] = '\0';


    // 背景を暗く
    SetDrawBlendMode(DX_BLENDMODE_ALPHA , 80);
    DrawBox(FIELD_X , FIELD_Y , FIELD_X+FIELD_MAX_X , FIELD_Y+FIELD_MAX_Y , color[1] , TRUE);
    DrawBox(FIELD_X , 410 , FIELD_Y+FIELD_MAX_X , FIELD_Y+FIELD_MAX_Y , color[0] , TRUE);
    SetDrawBlendMode(DX_BLENDMODE_NOBLEND , 0);

	//画像
	if (story[num].type==0)
	DrawGraph(  FIELD_X, FIELD_MAX_Y-116 ,img_board[1],FALSE);
	if (story[num].type==1)
	DrawGraph(  FIELD_X + 152, FIELD_MAX_Y-116 ,img_board[2],FALSE);
 後略
 
龍神プログラム支館でのサウンドノベルにキャラ画像の挿入を試みたのですが、うまくいきません。
表情差分はカットしたので、キャラ判断をして画像が表示されればよいのですがどうすればいいでしょうか?

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

Re: シューティング、会話での画像描写

#2

投稿記事 by kimuchi » 13年前

サウスさんのものをそのまま使っていれば、story[num].typeはint型だったと思うので
strcpy_s(story[num].type,10,token[0]);
ではなく、
story[num].type = atoi(token[0]);
ではないでしょうか? 

また、仮にstory[num].typeをchar型の配列で扱っていたとすると、
if (story[num].type==0)、if (story[num].type==1)
の判定式はおかしいです。

F

Re: シューティング、会話での画像描写

#3

投稿記事 by F » 13年前

strcpy_s(story[num].type,10,token[0]);の部分は自分なりの改悪だったんで修正します。

画像切り替えはif以外に何かあるでしょうか?

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

Re: シューティング、会話での画像描写

#4

投稿記事 by kimuchi » 13年前

画像切り替え、というより条件分岐なら他にswitchなどがありますが、、、
分岐自体はifで良いと思いますよ。

一応これでキャラの判別表示はできていると思うのですが、
まだ問題がありますか?
推論ですが、片方表示されているときにもう片方が消える、ということが問題なのでしょうか?
できれば修正コードの貼り付けもお願いします。

F

Re: シューティング、会話での画像描写

#5

投稿記事 by F » 13年前

if (story[num].type==0)、if (story[num].type==1)
でやるとエラーなので、まだ画像すら出てきてないですね。

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

Re: シューティング、会話での画像描写

#6

投稿記事 by kimuchi » 13年前

そうでしたか、早とちり申し訳ないですorz

では、
エラーに書いてある内容は分かりますか?
あとstory[num].typeは配列ですか?

F

Re: シューティング、会話での画像描写

#7

投稿記事 by F » 13年前

story[num].type = atoi(token[0]);の場合はエラーはなしでした。

となるとやはりif文の仕方が違うのでしょうか?

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

Re: シューティング、会話での画像描写

#8

投稿記事 by kimuchi » 13年前

質問にお答え頂けると助かるのですが(^^;)
とくにエラー内容が分かればこちらも対応しやすいので。

おそらくFさんの仰る通り、if文の所でエラーになっていると思います。

F

Re: シューティング、会話での画像描写

#9

投稿記事 by F » 13年前

いえエラーなしです ただ反応せずに普通に会話が進みます

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

Re: シューティング、会話での画像描写

#10

投稿記事 by kimuchi » 13年前

ということは、
story[num].type = atoi(token[0]);
でも画像が表示されないということですか?

だとすれば怪しいのは
ファイル読み込みの段階でtoken[0]の値がおかしい、ぐらいしか思いつきません(汗)
printfDx("%d\n",story[num].type)などで、if文に突入する直前のstory[num].typeの値を調べていただけますか?

F

Re: シューティング、会話での画像描写

#11

投稿記事 by F » 13年前

初心者なのでそういわれてもよくわかりません

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

Re: シューティング、会話での画像描写

#12

投稿記事 by kimuchi » 13年前

printfDx("%d\n",story[num].type);
if (story[num].type==0)
DrawGraph( FIELD_X, FIELD_MAX_Y-116 ,img_board[1],FALSE);
if (story[num].type==1)
DrawGraph( FIELD_X + 152, FIELD_MAX_Y-116 ,img_board[2],FALSE);

上のように書き換えて実行してみて下さい。
多分実行途中にばーっと文字が現れると思うのでそれを教えて下さい。

アバター
パコネコ
記事: 139
登録日時: 13年前
住所: 大阪

Re: シューティング、会話での画像描写

#13

投稿記事 by パコネコ » 13年前

実は龍神プログラム支館をまだ読んだことないので内容を理解できてませんが、
kimuchiさんの言ってることはおそらく、

コード:

printfDx("%d\n",story[num].type);//追加
    //画像
    if (story[num].type==0)
    DrawGraph(  FIELD_X, FIELD_MAX_Y-116 ,img_board[1],FALSE);
    if (story[num].type==1)
    DrawGraph(  FIELD_X + 152, FIELD_MAX_Y-116 ,img_board[2],FALSE);
みたいな感じでstory[num].typeを使う前に追加して動かしてみてください。
という意味だと思います。
===
初心者と言いつつ私よりプログラムできそう・・・
===
すいません
いないと思ったので勝手に補足説明しようとしました・・・
ニャン!!\(゜ロ\)(/ロ゜)/

F

Re: シューティング、会話での画像描写

#14

投稿記事 by F » 13年前

プログラムしたところ エクセルで打ち込んだ画像番号が画面左に縦一列で表示されました。
読み込みは出来ているということでいいでしょうか?

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

Re: シューティング、会話での画像描写

#15

投稿記事 by kimuchi » 13年前

どうやらそのようですね。
では次に

コード:

if (story[num].type==0){
     DrawGraph( FIELD_X, FIELD_MAX_Y-116 ,img_board[1],FALSE);
     printfDx("0");
}
if (story[num].type==1){
     DrawGraph( FIELD_X + 152, FIELD_MAX_Y-116 ,img_board[2],FALSE);
     printfDx("1");
}
このように書き変えて実行してみてください。
これで0やら1やらが表示されればとりあえずif文には問題ないと思います。

F

Re: シューティング、会話での画像描写

#16

投稿記事 by F » 13年前

表示されたのでif文には問題なさそうです。
とすればloadでimgbordで画像を読み込ませたのが問題でしょうか?

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

Re: シューティング、会話での画像描写

#17

投稿記事 by kimuchi » 13年前

すみません返信遅れましたorz

自分も配列でLoadGraph使っているのでそれは問題ないと思います。

ただちょっと気になっているのはimgbordが[1]から始まっていることですが・・・
imgbordの宣言文とそのloadでimgbordで画像を読み込ませている文を載せていただけますか?

追記:
返信がおそらく19時以降になります。度々すみません。

F

Re: シューティング、会話での画像描写

#18

投稿記事 by F » 13年前

GLOBAL int img_board[40]; の
img_board[1] = LoadGraph("../G1A223/img/talk/player");
img_board[2] = LoadGraph("../G1A223/img/talk/boss");
です

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

Re: シューティング、会話での画像描写

#19

投稿記事 by kimuchi » 13年前

原因が分かりました。
"../G1A223/img/talk/player"も"../G1A223/img/talk/boss"
ファイルのパスに拡張子が抜けています。

もしかしたら分からないかもしれませんので説明を。
まず、コントロールパネルを開いて「フォルダオプション」を開いてください。
次に、「表示」タブをクリックして、「登録されている拡張子は表示しない」のチェックを外して下さい。
そうしたら表示したい画像ファイルの入っているフォルダに行ってみてください。
多分「player.bmp」のように後ろに変なのが付いていると思います。それも含めてファイルパスを
"../G1A223/img/talk/player.bmp"
のように変えてみてください。

F

Re: シューティング、会話での画像描写

#20

投稿記事 by F » 13年前

どうやらそのせいですね
初歩的すぎてものすごく恥ずかしいです
今まで応えていただきありがとうございました

閉鎖

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