コンパクトなAI
投稿者 : じんみ(p17063-ipngn601hodogaya.kanagawa.ocn.ne.jp)
- 2012/12/08(Sat) 22:49
No.13613
|
|
|
|
|
何年振りでしょうか。お久しぶりです。 ただいまRPGを作っているのですが、敵のAIについての質問です。
「サイコロを振って、出た目の数によって行動選択率がそれぞれ違う」くらいのAIを、敵ごとに設定したいのですが
左から「攻撃・防御・スキルA・B・C・D」選択率 上から「サイコロ1〜6のとき」
の6*6の二次元配列にするのが一番コンパクトなのでしょうか? 1つ1つ設定すると AI.set(0,0,n);〜AI.set(5,0,n); 〜 AI.set(0,5,n);〜AI.set(5,5,n); と、めんどくさいです。 何か良い方法は他にないでしょうか?
|
Re: コンパクトなAI
投稿者 : リセッタ(ai126213025166.5.tss.access-internet.ne.jp)
- 2012/12/09(Sun) 22:54
No.13614
|
|
|
|
設定用の関数を作れば?
Ex) AI=new matrix(7); AI.addRows(6); // 選択率 攻撃 防御 スキル AI_set(AI,0,10,10); // 10% 10P 0% (捨身) AI_set(AI,1,30, 5,50); // 30% 5P 50% (通常) AI_set(AI,2,10, 0,50,1,10); // 10% 0P 50% 回復 10P AI_set(AI,3,20, 0,50,2,50); // 20% 0P 50% 回避 50% AI_set(AI,4,20, 0,50,3,30); // 20% 0P 50% 逃走 30% AI_set(AI,5,10, 0,50,4, 5); // 10% 0P 50% 瞑想 5P
function AI_set(obj,idx,rto,atk,def,a,b,c,d) { obj.set(idx,0,atk); obj.set(idx,1,def); obj.set(idx,2,a); obj.set(idx,3,b); obj.set(idx,4,c); obj.set(idx,5,d); obj.set(idx,6,rto); }
// おまけ 選択処理 function AI_select(obj) { var i,j,k,l; // i:選択番号 j:選択率計 k:選択値(百分率) l:登録レコード数 l=obj.size()/obj.cols; k=rnd(100); j=0; for(i=0; i<l; i++) { j+=obj.get(i,6); if(k<j) return i; } return -1; }
|
Re: コンパクトなAI
投稿者 : リセッタ(ai126213025166.5.tss.access-internet.ne.jp)
- 2012/12/09(Sun) 23:11
No.13615
|
|
|
|
修正 設定時、添字付けるのは面倒だよね
AI=new matrix(7); // AI.addRows(6); // データ領域の確保をしてはダメ! // 選択率 攻撃 防御 スキル AI_add(AI,10,10); // 10% 10P 0% (捨身) AI_add(AI,30, 5,50); // 30% 5P 50% (通常) AI_add(AI,10, 0,50,1,10); // 10% 0P 50% 回復 10P AI_add(AI,20, 0,50,2,50); // 20% 0P 50% 回避 50% AI_add(AI,20, 0,50,3,30); // 20% 0P 50% 逃走 30% AI_add(AI,10, 0,50,4, 5); // 10% 0P 50% 瞑想 5P
function AI_add(obj,rto,atk,def,a,b,c,d) { obj.add(atk); obj.add(def); obj.add(a); obj.add(b); obj.add(c); obj.add(d); obj.add(rto); }
// おまけ データロード function AI_load(obj,fn) { var i,j; obj.load(fn); for(i=0; i<obj.size(); i++){ j=valueOf(obj.get(i)); if(j!=null) obj.set(i,j); // データが数字なら文字→数値変換 } }
|
Re: コンパクトなAI
投稿者 : じんみ(p1146-ipngn601hodogaya.kanagawa.ocn.ne.jp)
- 2012/12/11(Tue) 18:37
No.13616
|
|
|
|
ありがとうございます。 うーん、これ以上小さくすることは難しいようです。無駄に関数多くなるのも大変ですので・・
おまけがそれ以上に役に立ちそうなので感謝(
|
|