再び質問させていただきます・・
ゲームプログラミングの館で、
else if(x%32!=0)
x++;
という部分を入れるという文があったのですが、理解できません・・。
Ⅹ座標を32を割って、その余りが0ならば(真ならば?)実行という意味でしょうか?
%について調べたところ a=b%c という計算でbをcで割ってその余りをaに入ると書いてあったのですが
(x%32!=0)では↑の a の役割をする部分がありません・・・。
そのサイトの一部を抜粋↓
int a = 10;
int b = 3;
int c;
c = a % b;
のとき 10 ÷ 3 の余りは 1 ですから c は 1 になります。
a=x%y
Re:a=x%y
返信ありがとうございます。
=が付かないことは理解できたのですが、
この
else if(x%32!=0)
x++;
の意味が理解できません・・・。
つまり余りが0になるまで X座標に+1させるっていうことですか?
今いる地点のX座標が63だったら 63÷32で余りが出るのでX座標に+1させて 64÷32で余りが0になるので進む距離は→を1回押したので+1させたのと余りが出て+1だから 2ピクセルしか進まない・・? という意味ですか?
それとも、 →を1回押して +1なので 1÷32(少数は余りにならない・・・?)で余りが出るので X座標に+31させて 32÷32で余りが0になるので進む距離は 32ピクセル・・・?という意味でしょうか?
追記:
すみません・・・。C言語は初心者で、どこまで乗せればいいか分からなかったので・・・。
if( Key[ KEY_INPUT_RIGHT ] == 1 ) //右ボタンが押されたら
ch.x++ ; //xの値を1増やす
else if(ch.x%32!=0) //32で割り切れない区間はオートで進む
ch.x++;
です。
多分コレであってると思います・・・。
=が付かないことは理解できたのですが、
この
else if(x%32!=0)
x++;
の意味が理解できません・・・。
つまり余りが0になるまで X座標に+1させるっていうことですか?
今いる地点のX座標が63だったら 63÷32で余りが出るのでX座標に+1させて 64÷32で余りが0になるので進む距離は→を1回押したので+1させたのと余りが出て+1だから 2ピクセルしか進まない・・? という意味ですか?
それとも、 →を1回押して +1なので 1÷32(少数は余りにならない・・・?)で余りが出るので X座標に+31させて 32÷32で余りが0になるので進む距離は 32ピクセル・・・?という意味でしょうか?
追記:
すみません・・・。C言語は初心者で、どこまで乗せればいいか分からなかったので・・・。
if( Key[ KEY_INPUT_RIGHT ] == 1 ) //右ボタンが押されたら
ch.x++ ; //xの値を1増やす
else if(ch.x%32!=0) //32で割り切れない区間はオートで進む
ch.x++;
です。
多分コレであってると思います・・・。
Re:a=x%y
これは、
キャラがいるx座標が必ず32の倍数になるように調整しているのではないでしょうか?
例えば、キャラの座標が64であったとして、
キーボードから→ボタンの押下を受け付けたとします。
if( Key[ KEY_INPUT_RIGHT ] == 1 )を満たしているので、ch.x++ が行われ、
キャラの座標は、→ボタンを押し続けている限り、1ずつ増えていきます。
ここで、座標が76のときに→ボタンを離したとします。
右ボタンが押されていない、かつ32で割り切れない条件を満たしたので、
else if(ch.x%32!=0) ch.x++; の処理が行われ、座標は1ずつ増えていきます。
そして、キャラの座標が96になったとき、96%32 == 0なので、
どちらの処理も行われなくなります。
言っていることが分かるでしょうか?
これは、キャラが中途半端なところで止まるのを防ぐための処理だと思います。
迷路などゲームで、→ボタンを一回押しただけで、一マスすすむのは、
(仮にボタンを離したとしても、一マス移動するまで動き続けると思います)
このような処理が行われているからです。
キャラがいるx座標が必ず32の倍数になるように調整しているのではないでしょうか?
例えば、キャラの座標が64であったとして、
キーボードから→ボタンの押下を受け付けたとします。
if( Key[ KEY_INPUT_RIGHT ] == 1 )を満たしているので、ch.x++ が行われ、
キャラの座標は、→ボタンを押し続けている限り、1ずつ増えていきます。
ここで、座標が76のときに→ボタンを離したとします。
右ボタンが押されていない、かつ32で割り切れない条件を満たしたので、
else if(ch.x%32!=0) ch.x++; の処理が行われ、座標は1ずつ増えていきます。
そして、キャラの座標が96になったとき、96%32 == 0なので、
どちらの処理も行われなくなります。
言っていることが分かるでしょうか?
これは、キャラが中途半端なところで止まるのを防ぐための処理だと思います。
迷路などゲームで、→ボタンを一回押しただけで、一マスすすむのは、
(仮にボタンを離したとしても、一マス移動するまで動き続けると思います)
このような処理が行われているからです。