■8方向へ自由自在

迷路型ゲームというと、古くはパックマンのような単純アクションゲームをイメージするかもしれないが、RPGにしても一種の迷路型ゲームといえる。ゲームシステムがどうであれ、ダンジョンや城の内部は典型的な迷路だし、フィールドも広大な迷路と解釈することができる。

こういった迷路内での主人公の動き(移動先)は、4方向あるいは8方向というのが一般的なスタイルだ。これは、迷路をあたかも碁盤の目に沿って描くように、マス目を単位として管理/構成していることに起因する。つまり、1マス単位で移動させるには8方向が限度なのだ。もちろん、マス目を細分化すれば何方向にでも分割することが可能だが、そうなると少しだけワナに乗ったり……というように、ゲームとして不自然な位置関係ができてしまう。そんなわけで、迷路では8方向以下の指定がリーズナブルなのである。

とりあえず、ここでは8方向を次のように1〜8の数値で定義する。例の『おたすけ忍風伝』でも、これと同じ番号で方向を管理している。

この定義自体は、とりたてて説明するほどのものではないし、入力に合わせて方向を決定するのも簡単だ。しかし、方向をプログラムで指定するとなると、初心者には荷が重いことがある。例えば、反対方向を向かせるにはどうすればよいかを考えてほしい。もちろん、現在の方向はわかっているものとするが、これをSelect Case文で1つずつ処理するのでは問題にならない。


反対方向=((現在方向+3) And 7)+1
ご覧のように、たった1行で現在方向を反転することができる。論理演算については解説済みなので、プログラムの趣旨さえ理解できれば容易にわかるはずだ。

同様に、右を向かせたり左を向かせたりしたいこともある。さらには、斜め右、斜め左……となると、その都度考えるは効率が悪い。そこで、アッサリと解答を示しておくので、納得のいくまでロジックを考えてもらいたい。


右方向=((現在方向+5) And 7)+1
左方向=((現在方向+1) And 7)+1
斜め右方向=((現在方向+6) And 7)+1
斜め左方向=(現在方向 And 7)+1