戦術

id:eiji8pou:20031127:p4 の続き。
思いついたことは書いておかないと忘れるので。
Perlとかのプログラミング言語を使っての実装を考えてみる。
マップは六角ヘックスマップを使用する。そこに参加するユニットは、それぞれの特性を考慮した移動方法と所持武器による攻撃手段を持つ。
プレイヤーは各ユニットにコマンドを与えることができる。コマンドは連鎖を考えて複数与えることもできる。ユニットは与えられたコマンドを解決するようにリアルタイムで行動する。プレイヤーは途中でポーズをしながら、各ユニットにコマンドを与えていく。
コマンドには以下のようなものがある。二足歩行のロボットを念頭に置いている。

歩く
前方120度の範囲で方向を変えずに一定距離を移動する。別ユニットがあった場合、それが高さ的に高いものがあれば、その手前で止まる。そうでなければ自動的に「踏み潰し」を行う。
走る
前方60度の範囲で方向を変えずに一定距離×2を移動する。別ユニットがあった場合、それが高さ的に高いものがあれば、その手前で止まる。そうでなければ自動的に「踏み潰し」を行う。
ダッシュ
前方30度の範囲で方向を変えずに一定距離×3を移動する。別ユニットがあった場合、それが高さ的に高いものがあれば、その手前で止まる。そうでなければ自動的に「踏み潰し」を行う。
バックダッシュ
後方120度の範囲で方向を変えずに一定距離×2を移動する。別ユニットがあった場合、それが高さ的に高いものがあれば、その手前で止まる。そうでなければ自動的に「踏み潰し」を行う。
すり足
全方向へ方向を変えずに一定距離の半分を移動する。別ユニットがあった場合、それが高さ的に高いものがあれば、その手前で止まる。そうでなければ自動的に「踏み潰し」を行う。左右への移動は事実上これを使用する。
前ジャンプ
距離が加減できる歩く・走る等に比べて、必ず一定距離しか移動できない。前方120度の範囲で一定距離を移動する。他のユニットのいるヘックスへ進入した場合は、「踏み潰し」が自動的に実行される。
右ジャンプ
移動方向が右120度になった以外は前ジャンプと差異はない。
左ジャンプ
移動方向が左120度になった以外は前ジャンプと差異はない。
後ジャンプ
移動方向が後方120度、一定距離の半分になった以外は前ジャンプと差異はない。
踏み潰し
正確には行動ではない。別のユニットがいるヘックスに進入すると発生する現象。移動系で起こりやすい。
射撃
遠距離攻撃兵器を使う行為。射撃は本来移動せず、静止した状態で行う。とは言え、走った後に身を投げ出してうつぶせになり、射撃体勢を取るのは常套手段。
攻撃
手に持った白兵戦武器や四肢で攻撃する。
踏み込み攻撃
1歩を移動しながらの攻撃。
体当たり
全体で当たる。移動と攻撃を含む行為。走る+体当たり、ダッシュ+体当たりがある。
方向転換
向きを変える。

コンピュータ用のアルゴリズム
ハッシュを用意する。キーはマップのヘックスごとの番号である。値にはそこが誰の攻撃可能範囲か、誰の移動可能範囲かの情報のリファレンスが入っている。
そこでユニット名や各種条件でgrepする。その中で各種条件で順位づけてソートし、その最高のものを採用する。