つい最近までコンピュータで乗算と除算をするのが大変だったなんて意外。さらにファミコンのCPUには乗算・除算の命令自体がないそうだ。そこで「シフト演算」なるものをつかうらしい。
シフト演算とは、ビットを左右にずらして(シフトして)「2乗」や「-2乗」を行うことみたい。そしてこの演算は高速が強味らしい。くわしくはこちら→シフト演算。
シフト演算と加算を組み合わせることで「3倍」や「5倍」といった累乗倍以外の計算もできる。
1倍:元の値
2倍:シフト演算による2倍
3倍:シフト演算による2倍 + 元の値
4倍:シフト演算による4倍
5倍:シフト演算による4倍 + 元の値
6倍:シフト演算による2倍 + シフト演算による4倍
7倍:シフト演算による8倍 ー 元の値
8倍:シフト演算による8倍
その他に、あらかじめ出した結果を「テーブル」状に保存する方法もあるらしい。この方法ならば結果を参照するだけなので高速処理が可能。
「ドルアーガの塔」の迷路生成法
「ドルアーガの塔」は迷路情報のデータとして持たず、ステージ数を種とした「乱数」つかって生成しているらしい。毎回おなじ形の迷路になるのは「擬似乱数」だからだそうだ。以下のようなアルゴリズムで迷路を生成している。
①ステージ内に均等にならんだ「柱」を順番に選ぶ。
②0から3の乱数をつかい「壁」をつくる。「0→上」「1→右」「2→下」「3→左」
③もし「外壁」か「他の壁とすでに接触している柱」に接触したら①にもどる。それ以外は④へ。
④0から2の乱数をつかい、「0」なら「壁」をのばした進行方向左へ、「1」なら直進、「2」なら進行方向右へ、さらに壁を伸ばす。
これを「壁」と接触していない「柱」がなくなるまで繰り返す。
自動的に迷路を生成する方法の参考はこちら→自動生成迷路。
松浦 健一郎 司 ゆき
技術評論社
売り上げランキング: 256562
技術評論社
売り上げランキング: 256562

