文字の表示が・・・

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

文字の表示が・・・

#1

投稿記事 by yasya » 16年前

こんばんは。
今、ゲームプログラミングの館などを参考にして文字をノベルゲーム風に表示させる関数を作っているのですが、文字の表示がおかしなことになって文字が表示されません・・・。
どうしたらいいか教えてください。
詳しくはファイルを添付するので、そちらを参照してください。

Justy

Re:文字の表示が・・・

#2

投稿記事 by Justy » 16年前


>どうしたらいいか教えてください

 まず、one_moji_bufの一文字しか表示しない、というところを直してください。
 
 画面はメインループの ClearDrawScreen()によって毎フレーム綺麗さっぱり全て消去されます。
 従って、表示したい文字は全て毎フレーム表示し直す必要があります。

 そのあたりに注意して直してみてください。

yasya

Re:文字の表示が・・・

#3

投稿記事 by yasya » 16年前

> まず、one_moji_bufの一文字しか表示しない、というところを直してください。

すいません、具体的にどうしたらいいかアドバイスだけでも教えてもらえませんか^^;

Justy

Re:文字の表示が・・・

#4

投稿記事 by Justy » 16年前

 一文字だけ表示して終わり、にしないで、指定された文字数目までを切り出した文字列を作ってください。
 
 たとえば「あいうえおかきくけこ」という文字列があるとき、3文字目まで、なら「あいう」を、
5文字目までなら「あいうえお」となるように。

 これは大元の文字列から切り出せばいいでわけですが、切り出す際に改行や画面外判定などを
入れて必要に応じて改行をします。

 その改行の際に、切り出した文字列を表示すればいいかと思います。


 以下はサンプルです。
[color=#d0d0ff" face="monospace]
void writetring( int X, int Y, CString CS, int color )
{
CString s;
int yOffset = 0;

for(int n=0; n<cp; n+=2)
{
bool draw = false;
bool cr = false;

if(CS[n] == 'K')
{
cp++;
++n;
cr = draw = true;
}
else
if(CS[n] == '\0' || CS[n] == 'E')
{
end_flag = 1;
draw = true;
}
else
{
char t[/url] = { CS[n], CS[n+1], '\0' };
s += t;
if(X + GetDrawStringWidth(s.GetString(), s.GetLength(), 0)> 640 - MOJI_SIZE)
cr = draw = true;

if(n + 2 >= cp)
draw = true;
}

if(draw)
{
DrawString( X , Y + yOffset, s.GetString() , color );
s.Clear();
}

if(cr)
yOffset += 16;
}

if(!end_flag)
cp += 2;
}
[/color]

yasya

Re:文字の表示が・・・

#5

投稿記事 by yasya » 16年前

Justyさんどうもありがとうございます^^
何とかなりそうなので、あとは自分で調べてがんばってみようと思います。

閉鎖

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