【移動キー入力[1〜9]の小技】


【1】キー入力コマンドから横・縦の移動量を算出

■移動キー入力や向きの値を取得し、そこから横の移動量・縦の移動量を計算する方法です
※値が 4 の場合、左なので横移動量[-1] 縦移動量[0] と考えます
 値が 9 の場合、右上なので横移動量[1] 縦移動量[-1] と考えます
 以上を理解した上でご利用ください。

取得した移動キー・向きの値から 1 を引きます、これによって
  789   678
  4  6 → 3  5
  123   012
となります。 ここから %3 して3で割った余りを取得すると
  678   012
  3  5 → 0  2
  012   012
となり、あとは-1してやることで横の移動量として使える数値[-1 〜 1]になります。

では /3 して3で割った値を取得した場合は
  678   222
  3  5 → 1  1
  012   000
となるので、3 ではなく -3 で割っていれば[-2 〜 0]となり
そこから +1 してやることで縦の移動量として使える数値[-1 〜 1]になります。


【2】横移動量と縦移動量から移動キー入力・向きの値を計算する

※それぞれの移動量の範囲は[-1 〜 1]の間とする
まず数値の 5 へ横の移動量[-1 〜 1]を足す
 4 ← 5 → 6
 -1    0    +1  [横]
次に縦の移動量に -3 をかけたものを足すと
      [縦]
 7┃8┃9  -1
 ↑┃↑┃↑
 4┃5┃6   0
 ↓┃↓┃↓
 1┃2┃3 +1
となり、値が算出される。


【3】向きの値から反対側の向きの値を計算する

反対側の向き = 10 - 向き[1 〜 9]

左下[1]を向いていれば 10 - 1 なので 9[右上]
上[8]を向いていれば 10 - 8 なので 2[下]


【4】移動キー入力・向きの値から斜め[1,3,7,9]かどうか計算する

値を2で割った余りを取得すると 0 か 1 の値を得られる
奇数[1,3,5,7,9]なら2で割った余りが 1
偶数[2,4,6,8]なら2で割った余りが 0
なので 1 なら斜めである。




<執筆者:きじこ> 


【←にフレームが表示されていない方はここをクリック】