HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0920
note-T敵の行動7未解決


note-T

リンク

2006/9/20(Wed) 17:11:06|NO.2521

いまボードゲームを作っているんですが,敵の行動をどうやって作れば良いのかわからないので、何
かアドバイス下さい



この記事に返信する


七次元

リンク

2006/9/20(Wed) 17:33:49|NO.2522

ゲームの種類によって変わってきますね。
パターンをいくつか決めておいてランダムで実行するとか、行動を一個一個ランダムにするとか
プレイヤーに向かって動くとかそんな感じですかね?



note-T

リンク

2006/9/21(Thu) 09:08:03|NO.2536

チェスみたいな感じです。
ランダムにしてたんですですが、それだとどうにも面白くないので、他の方法はないかと。



kz3

リンク

2006/9/21(Thu) 11:43:32|NO.2539

ランダムが嫌なら自分でランダムを採用しないようなプログラムにすればいいのでは??
# 的外れ?



cbird

リンク

2006/9/21(Thu) 14:23:02|NO.2540

チェスのようなゲームということなので、まずは自分の思考をルーチン化してみてください。
自分が駒を動かすとき考えている「何故その駒なのか?」「どこに動かすのか?」を条件式と
していくことで敵の思考ルーチンを作る参考になると思いますよ。

また、某将棋ソフトなどでは進めた譜の状態を点数化して、もっとも高得点の進み方を選択す
るようにしているそうです。この方式だと状態を数値化するのがネックですが。



七次元

リンク

2006/9/21(Thu) 16:20:21|NO.2542

擬似AIはむずかしいと思いますね。
自分の思考でルーチンを作るなら相当チェスが強い人が考えないとワンパターンで弱くなってしまいそうですし



GENKI

リンク

2006/9/21(Thu) 20:34:21|NO.2546

 自分の戦略をそのまま表現すればいいだけなのですが…問題はどう表現するかでしょうか。
とりあえず思いついた手法を説明してみます。
升目にそれぞれ特典をつけていき、一番得点の高いマスに駒を置く方法です。

 オセロを例にとってみます。(将棋やチェスも同じ方法でいけると思います。)
標準状態で全てのマスは0点です。
まずは自分の駒が置けるマスに+1点します。
次に、

・端っこなら+1
・角なら+2
・+(相手の駒を返せる数)
・角のひとマス手前なら-1
・…  (その他独自の戦略しだいで得点を割り振る。)

という感じで、全てのマスに点数を割り振ります。

点数の割り振りが終わったら、一番点数の大きいマスに駒をおきます。
同じ特典のマスがいくつかあったらそのときはランダムで。
こんな感じでも完全にランダムなのよりはいいと思います。



 ちなみに先手を読む場合は、置いた後(相手の順番)のときの盤の状態を評価すれば良いはず…。
評価方法はさっきと同様に点数をつけて最後に点数を合計する。
合計した点数が小さいほうが相手にとって不利なわけだから、これを使って評価すればok…?


適当に思いつくままに書いてみましたがどうでしょうか。



じった

リンク

2006/9/22(Fri) 00:58:37|NO.2549

チェスや、将棋のようなゲームの場合
攻撃系の点数割り振り以外に、守り系も考慮に入れないとだめですね。
王の守りを固めてた駒が、王をほったらかしにして敵の駒を取りにいっては困りますので。

正直、そこそこ考えているように見えるアルゴリズムを作るのは、かなり難しそう。

一手読み程度でよければ…
  まず、自分の攻撃について点数付けをして、その上位の手について、それぞれ
  その次の敵の手の得点付けもして、
  敵の手の点数より、自分の手の点数が上回るものを採用する…とか

これでも「攻め頭」になっちゃって、攻められたときの守りが弱いけど…
先に守りを考慮して、大きな危険がない時のみ、上記の読みを行うのが良いのかな。



ONION software Copyright 1997-2021(c) All rights reserved.