ページ 1 / 1
文字列表示に関する質問
Posted: 2008年7月03日(木) 18:34
by 西村
はじめまして。C言語に関しては基本ぐらいしか分からない素人ですが、よろしくお願いします。
ゲームプログラミングの館を見ながら勉強させていただいていたのですが、困ったことがあったので
質問させていただきます。
『サウンドノベル風文字列表示法』を見て、自分でちょっとノベルゲーム風の画面を作って見たので
すが(背景になる絵と、キャラの立ち絵二体と、メッセージウィンドを裏画面処理で描画させて)、そ
うしたら文字の表示がものすごく遅くなってしまいました。どうすれば解決出来ますでしょうか?
Re:文字列表示に関する質問
Posted: 2008年7月03日(木) 19:27
by Mist
処理速度に関する質問は、西村さんの作られたソースに依存するところが大きいのでソースを提示していただけないことには的確な回答は得られにくいかと思います。
その場合、規約にあるとおり開発環境の提示も忘れないでください。
Re:文字列表示に関する質問
Posted: 2008年7月03日(木) 20:31
by やそ
文字を表示するタイミングの取り方、もしくはそのタイミングを計る変数の増減を行う位置
がおかしくなっている可能性があります。
(あくまで可能性^^)
的確な回答を得るためには・・・
Mistさんの言われるとおり、規約に従い、再現性のある最小限のソースプログラムをご提示願います。
Re:文字列表示に関する質問
Posted: 2008年7月03日(木) 22:59
by 西村
素早い返信ありがとうございます。一日ぐらい返信こないかな、なんて暢気な見込みをしていました…
切り出し箇所はここでいいのか不安ですが、以下がソースです。
for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}
if(Key[KEY_INPUT_RETURN]==2){
i=0;
ch_i++;
if(ch_i==5)
break;
}
if(i<=80-2 && ch[ch_i]!='\0' && counter%5==0){
i+=2;
strncpy(disp,ch[ch_i],i);
disp='\0';
}
LoadGraphScreen( 0 , 0 , "back.png" , FALSE ) ;
LoadGraphScreen( 10 , 0 , "hito1.png" , TRUE ) ;
LoadGraphScreen( 300 , 0 , "hito2.png" , TRUE ) ;
LoadGraphScreen( 0,200,"wind.png",TRUE);
DrawFormatString(35,330,White,"%s",disp);
counter++;
ScreenFlip();
ソースコードの上げ方間違えていたら修正します。
開発環境はBorandC++ Compiler 5.5 必要情報かは解りませんが、我が愛機はノートパソコンのWindowsXPno
五年ぐらい前の古い奴で、あまり性能はよろしくないような……
Re:文字列表示に関する質問
Posted: 2008年7月03日(木) 23:41
by 木霊
> LoadGraphScreen( 0 , 0 , "back.png" , FALSE ) ;
> LoadGraphScreen( 10 , 0 , "hito1.png" , TRUE ) ;
> LoadGraphScreen( 300 , 0 , "hito2.png" , TRUE ) ;
> LoadGraphScreen( 0,200,"wind.png",TRUE);
この4行が原因だと思われます
・・・・
これだと毎ループごとに画像データを読み込んで描画しているので大変遅くなります
プログラムの最初の方で
int Back_Gr_Handle = LoadGraph ( "Back.png" );
として画像を一度だけ読み込んでおき、描画する時には
DrawGraph ( 0, 0, Back_Gr_Handle, FALSE );
として読み込んだ画像を表示するようにしてみてください
Re:文字列表示に関する質問
Posted: 2008年7月04日(金) 01:35
by 西村
木霊さん、回答ありがとうございます。
返信していただいた通りにしたところ、無事に文字の表示速度を上げることが出来ました。
書き込みしてすぐさま返信を下さったやそさんとMistさんにも改めてお礼をさせていただき
ます。何も知らない初心者なので、またお世話になるかと思いますが、そのときはまたよろし
くお願いします。