この章では↓キーを押すことでSelectNum = (SelectNum + 1) % 5の処理で0~5のループをしていました。
そこで↑キーでも同じ事をやってみようと思い、SelectNum = (SelectNum - 1) % 5で処理をしてみたのですが、この場合0から-1された時に-1となり、ループが出来ません。
if(SelectNum < 0) SelectNum = 4;とすればいいと思うのですが入れると上にある処理を分解しなくてはいけないし、↑キーの処理だけ見た目があれになるのも嫌なので、いい方法ありませんか?
<code=C>
while(!ProcessMessage() && !ScreenFlip() && !ClearDrawScreen() && !gpUpdateKey())
{
//----更新処理----//
if( Key[ KEY_INPUT_DOWN ] == 1 || Key[ KEY_INPUT_DOWN ] > 30)
{ // 下キーが押された瞬間だけ処理
SelectNum = ( SelectNum + 1 ) % 5; // 現在の選択項目を一つ下にずらす(ループする)
}
if(Key[ KEY_INPUT_UP ] == 1 || Key[ KEY_INPUT_UP ] > 30)
{ //上キーが押された瞬間だけ処理
SelectNum = ( SelectNum - 1 ) % 5; // 現在の選択項目を一つ上にずらす(ループする)
}
//----描画処理----//
for( int i=0; i<5; i++ ){ // メニュー項目を描画
if(i == SelectNum)
{
DrawFormatString( MenuElement.x - 20, MenuElement.y, GetColor(255,255,255), MenuElement.name );
}
else
{
DrawFormatString( MenuElement.x, MenuElement.y, GetColor(255,255,255), MenuElement.name );
}
}
}
</code>
3.3「章簡単な選択画面を作る」について
Re: 3.3「章簡単な選択画面を作る」について
SelectNum = ((SelectNum - 1)+5) % 5とするのがいいと思います。
また、「5」というマジックナンバーではなく、定数を利用するとさらに良くなると思います。
また、「5」というマジックナンバーではなく、定数を利用するとさらに良くなると思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 3.3「章簡単な選択画面を作る」について
なるほど!解決しました!ありがとうございます。
しかし3.4章に書いてあったのですね;少し焦りすぎました;
でも書き方が2つ知れた事もいい経験値となったと思います。ありがとうございました。
しかし3.4章に書いてあったのですね;少し焦りすぎました;
でも書き方が2つ知れた事もいい経験値となったと思います。ありがとうございました。