文字列列挙で
Posted: 2010年11月23日(火) 20:12
このサンプルを参考に→http://homepage2.nifty.com/natupaji/DxL ... am.html#N6
文字列列挙方法を学んでいるのですが
#define MOJI_SIZE 24
// 仮想テキストバッファの横サイズ縦サイズ
#define STRBUF_WIDTH 24
#define STRBUF_HEIGHT 20
char StringBuf[ STRBUF_HEIGHT ][ STRBUF_WIDTH * 2 + 1 ] ;
int CursorX = 0 , CursorY = 0 ; // 仮想画面上での文字表示カーソルの位置
int SP , CP ;
char OneMojiBuf[ 3 ] ; // 1文字分一時記憶配列
ch[5][256]={
"プログラムを習得するに@は、実際に自分で書いてみることが大事。",
"参考書を読むことも重要だが、数学のように演習を通して、",
"体に身につけるようにしよう。",
"きっと、よりはっきりと、関数の使い方、",
"プログラムの書き方がわかるだろう。"
};
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
// 1文字分抜き出す
OneMojiBuf[ 0 ] = ch[ SP ][ CP ] ;
OneMojiBuf[ 1 ] = ch[ SP ][ CP + 1 ] ;
OneMojiBuf[ 2 ] = '\0' ;
StringBuf[ CursorY ][ CursorX] = OneMojiBuf[ 0 ] ;
StringBuf[ CursorY ][ CursorX+ 1 ] = OneMojiBuf[ 1 ] ;
// テキストバッファの描画
for( i = 0 ; i < STRBUF_HEIGHT ; i ++ )
{
DrawString( 8 , i * MOJI_SIZE , StringBuf[ i ] , GetColor( 255 , 255 , 255 ) ) ;
}
CP ++ ;
CursorX ++ ;
if(ch[ SP ][ CP ]=='\0') {
SP ++ ;CursorY++ ;CP=0 ;CursorX=0 ;}
}
上のように書いて"実際に自分で書いてみることが大事という"部分が一度描画されてその上から
次の文の"参考書を読むことも重要だが・・・"の文が描画され上書きされてしまいます。
改行後にも"参考書を読むことも重要だが・・・"という文が2回連続で来てしまいます
なぜこうなるのかご教授願います
文字列列挙方法を学んでいるのですが
#define MOJI_SIZE 24
// 仮想テキストバッファの横サイズ縦サイズ
#define STRBUF_WIDTH 24
#define STRBUF_HEIGHT 20
char StringBuf[ STRBUF_HEIGHT ][ STRBUF_WIDTH * 2 + 1 ] ;
int CursorX = 0 , CursorY = 0 ; // 仮想画面上での文字表示カーソルの位置
int SP , CP ;
char OneMojiBuf[ 3 ] ; // 1文字分一時記憶配列
ch[5][256]={
"プログラムを習得するに@は、実際に自分で書いてみることが大事。",
"参考書を読むことも重要だが、数学のように演習を通して、",
"体に身につけるようにしよう。",
"きっと、よりはっきりと、関数の使い方、",
"プログラムの書き方がわかるだろう。"
};
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
// 1文字分抜き出す
OneMojiBuf[ 0 ] = ch[ SP ][ CP ] ;
OneMojiBuf[ 1 ] = ch[ SP ][ CP + 1 ] ;
OneMojiBuf[ 2 ] = '\0' ;
StringBuf[ CursorY ][ CursorX] = OneMojiBuf[ 0 ] ;
StringBuf[ CursorY ][ CursorX+ 1 ] = OneMojiBuf[ 1 ] ;
// テキストバッファの描画
for( i = 0 ; i < STRBUF_HEIGHT ; i ++ )
{
DrawString( 8 , i * MOJI_SIZE , StringBuf[ i ] , GetColor( 255 , 255 , 255 ) ) ;
}
CP ++ ;
CursorX ++ ;
if(ch[ SP ][ CP ]=='\0') {
SP ++ ;CursorY++ ;CP=0 ;CursorX=0 ;}
}
上のように書いて"実際に自分で書いてみることが大事という"部分が一度描画されてその上から
次の文の"参考書を読むことも重要だが・・・"の文が描画され上書きされてしまいます。
改行後にも"参考書を読むことも重要だが・・・"という文が2回連続で来てしまいます
なぜこうなるのかご教授願います