/***************************** この関数を呼びだすのは、目的地を指定する、または攻撃などのアクションを させるときだけである。 *****************************/ void enemyMove( struct EE *ee ) { int i; int retmap[MAPSIZ*MAPSIZ]; int ii; for(i=0;i<ee->enumber;i++){ if( ( -- ee->enext_move[i] ) <= 0 ){ /* 移動タイミングだったぞ */ ee->enext_move[i] = EMOVE_INTERVAL; /* EMOVE_INTERVAL - ee->elv[i]というようにしてレベルがあがると頻繁に動くとかできる*/ switch( ee->etype[i] ){ case 1: { /* くっついていたら攻撃 */ if( 0 /* くっついてる */ ) { int npi=getNearestIndex( ee->ex[i],ee->ey[i],ee->px, ee->py , ee->pnumber ); if( npi >= 0 ){ ee->retx[i] = ee->px[npi]; ee->rety[i] = ee->py[npi]; } else { continue; } ee->retact[i] = EREACT_ATTACK; } else { ee->retact[i] = EREACT_MOVE; } if( RAND() > 20000 ){ /* くっつこうとして目的地を指定 */ int nearest_player_index = getNearestIndex( ee->ex[i] , ee->ey[i],ee->px, ee->py , ee->pnumber ); } else { /* 2歩以内からランダム */ ee->retx[i]= ee->ex[i] - 2 + RAND() % 5; ee->rety[i]= ee->ey[i] - 2 + RAND() % 5; } } break; } } } }
std::vector<double> getMatrixAtNearestTime(const double timing, const std::string diagname)const{ return getMatrix(diagname)[getNearestIndex(timing)];};
// returns the data as vector (vs ydata, xdata and diagnostics is specified), used for std::vector<double> getMatrixAtNearestTime(const double timing, const size_t index)const{ return getMatrix(index)[getNearestIndex(timing)];}