最近トヨタのアクアのCMソングが気になっています。
今までのトヨタCMにはない爽快なリズムで聴いてから耳に残っていました。
夕食を用意して居る時、このCMが流れたので家内に聞いてみた
「このCMソングいいね」
「あれ?これ、初音ミクの千本桜だよ」
[youtube]
[/youtube]
とうとうトヨタのCMにボーカロイドの波が訪れたのか。
youtubeやニコ動からトヨタのCMに抜擢って凄いなぁと思いつつ
ハイブリッドが時代に合わせて進んで行くのを感じました。
同時に聞いて直ぐわかる家内もスゲーなと思いました。
以下SRPGの敵AI実装開始
CPUが目的地を決定するために使用する静的局面評価を作成する関数を用意しました。
試験的に決定した目的地(00)向かうのに、移動距離がどれだけ必要かを計算する関数です。
ここに自分の移動範囲を重ねて数字の一番数字の少ない場所が目的地になります。
► スポイラーを表示
CODE:
//-----------------------------------------------------------------------------
// 名前 : CalcAdvMap
// 引数 :
// 戻り値: 正常終了 = nResultOK
// エラー = nResultNG
// 説明 :AdvMapの計算
//-----------------------------------------------------------------------------
int CMoveEnemy::CalcAdvMap(int ax,int ay,int cnsPow){
int sumcost;
const int Nomove = -1;
//バッファオーバーチェック
if(ax cm->md.Width - 1|| ay cm->md.Height - 1)return nResultNG;//地形を回り込んでしまうバグを回避するため-1
AdvMap[ay][ax] = cnsPow;//有利度マップへここまで費やした移動コストの書き込み
int coif_y_U,coif_y_D,coif_x_R,coif_x_L;
//移動コスト取得
int nDown = ReturnMoveCost(ax,ay);
if(nDown == 100){
AdvMap[ay][ax] = Nomove;
}
//int nDown = 1;
//UD係数の決定
if(ay == 0){coif_y_U = 0;coif_y_D = 1;
}
else if(ay == cm->md.Height - 1){
coif_y_U = 1;coif_y_D = 0;
}else{
coif_y_U = 1;coif_y_D = 1;
}
//LR係数の決定
if(ax == 0){
coif_x_R = 0;coif_x_L = 1;
}else if(ax == cm->md.Width - 1){
coif_x_R = 1;coif_x_L = 0;
}else{
coif_x_R = 1;coif_x_L = 1;
}
sumcost = cnsPow + nDown;
//上
if( AdvMap[ay - coif_y_U][ax] > sumcost ){ CalcAdvMap( ax ,ay - coif_y_U , sumcost); }
//下
if( AdvMap[ay + coif_y_D][ax] > sumcost ){ CalcAdvMap( ax ,ay + coif_y_D , sumcost); }
//右
if( AdvMap[ay][ax-coif_x_R] > sumcost ){ CalcAdvMap( ax - coif_x_R ,ay , sumcost); }
//左
if( AdvMap[ay][ax+coif_x_L] > sumcost ){ CalcAdvMap( ax + coif_x_L ,ay , sumcost); }
return nResultOK;
}

- ブレイブなアップルの香り.png (17.4 KiB) 閲覧数: 265 回
00が目的地、-1が進めない場所、99が周囲が囲まれている等で辿りつけない場所
1~普通の数字が00まで移動するために必要な移動力です。
この配列を生成する関数を考えるのに5時間以上掛かりました。SRPGはムズイ!!