ページ 11

スコア表示

Posted: 2011年3月27日(日) 22:49
by koudai
visual C++2008で書いてます。
特にDXライブラリーなどを使わずシューティングゲームを作っているのだすが、スコアの表示方法が分りません。
スコア表示は画像で行っています。
intでスコア数を記録して

//スコアの初期表示
for(int i = 0; i < 9; i++){
SelectObject(hMemDC, hText);
TrnsBlt(hdc, hMemDC, 16*i, 0, 16, 18, 0, 0);
}
//スコアの表示
SelectObject(hMemDC, hText);
TrnsBlt(hdc, hMemDC, 144, 0, 16, 18, (score%10)*16, 0);
として、1~9まで表示させることが出来ました。
ですが、10以降を表示させる方法が分りません。
10になったら一つ左にずらして表示させる方法を教えてください。

000000000
   ↓
000000001
   ↓
000000009
   ↓
000000001
と言った感じです。

Re: スコア表示

Posted: 2011年3月27日(日) 22:55
by Suikaba
関数だけかかれてもわからないので、のせてもらえません?
TrnsBltとかだけかかれてもいまいちはっきりしないかと

Re: スコア表示

Posted: 2011年3月27日(日) 23:03
by koudai
すいません。書きなおします。

visual C++2008で書いてます。
特にDXライブラリーなどを使わずシューティングゲームを作っているのだすが、スコアの表示方法が分りません。
スコア表示は画像で行っています。
intでスコア数を記録して

コード:

//スコアの初期表示
for(int i = 0; i < 9; i++){
SelectObject(hMemDC, hText); 
TransparentBlt(hdc, 16*i, 0, 16, 18, hMemDC, 0, 0, 16, 18, SRCCOPY ); 
}
//スコアの表示
SelectObject(hMemDC, hText); 
TransparentBlt(hdc, 144, 0, 16, 18, hMemDC, (score%10)*16, 0, 16, 18, SRCCOPY );

として、1~9まで表示させることが出来ました。
ですが、10以降を表示させる方法が分りません。
10になったら一つ左にずらして表示させる方法を教えてください。

000000000
   ↓
000000001
   ↓
000000009
   ↓
000000001
と言った感じです。

Re: スコア表示

Posted: 2011年3月27日(日) 23:47
by a5ua

コード:

int score;
int digit[9];
があるとして、scoreの各桁の数字をdigitに入れる処理は書けますか?

例えば、score == 1192なら
digit[0] == 1
digit[1] == 1
digit[2] == 9
digit[3] == 2
  ・
  ・
残りはゼロ

といった具合です。

これができれば、おそらく目的は達成できると思います。

Re: スコア表示

Posted: 2011年3月28日(月) 00:24
by しひ
10で割ると、十の位が一の位に来ますね。
更に10で割ると、百の位が一の位に来ますね。
以下略。

お節介かとは思いますが、マジックナンバーは避けた方が良いかと思います。

Re: スコア表示

Posted: 2011年3月28日(月) 00:43
by koudai
しひさんありがとうございます。無事出来ました。

皆様返信ありがとうございました。