座標と除算

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

座標と除算

#1

投稿記事 by kms » 16年前

すみません。どうしてもわからない箇所があるので質問させて頂きます。

(以下ゲームプログラミングの館より抜粋)

区間の大きさは1つ32ピクセルですから
現在のx座標を32で割れば、現在いる区間の配列要素番号になります。
次に進もうとする方向の区間の配列要素が1ならば進めない、
そんな判定をする関数を書いてみましょう。
int can_or_cannot(int x,int y,int muki){
  if(muki==1)
    if(hantei[x/32+1]==1)
      return 1;
  if(muki==3)
    if(hantei[x/32-1]==1)
      return 1;
  return 0;
}
リターン1は進めない、リターン0は進める事を意味します。


この、「現在のx座標を32で割れば、現在いる区間の配列要素番号になります。」という箇所が、
お恥ずかしながらどうしても理解できません。
「x座標を32で割る」という意味が頭のなかでうまく把握できていないのです。
if(muki==1)
    if(hantei[x/32+1]==1)
      return 1;
  if(muki==3)
    if(hantei[x/32-1]==1)
      return 1;
の部分になります。

MNS

Re:座標と除算

#2

投稿記事 by MNS » 16年前

上図をご覧ください。

32×32の四角、これを区間としますが、それが4つあります。
それぞれの座標は緑色の字で表しています。

ここで、青点がありますが、これがプレイヤーの座標とします。
これが(15, 43)であった場合、これを32で割ると、結果が整数になるのはお分かりでしょうか?
C言語では、整数を整数で割ったとき、その商の小数点以下は切り捨てられます。

よって、32で割った結果は(0,1)となり、これは区間の座標と一致するのが分かるでしょうか

これが一応私が出来る限りの説明ですが、理解できますでしょうか・・

閉鎖

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