KickTo::KickTo(World& w ,double _target_angle){ // angle:count = 90:15 //std::cout << "KickTo constructed!!" << std::endl; finish_flag = false; is_kicked = false; target_angle = _target_angle; judgement(w); updateFinishFlag(w); }
std::string Attack::getNextAngle(World& w) { std::stringstream ss; if((w.getPlaymode()=="BeforeKickOff" || w.getPlaymode()=="Goal_Left" || w.getPlaymode()=="Goal_Right")){ beam_flag = true; start_flag = true; ss << "(beam " << initpos[0] << " " << initpos[1] << " " << initpos[2] << ")"; // std::cout << ss.str() << std::endl; while(!elementList.empty()){ ElementBase* tmp = elementList.front(); delete tmp; elementList.pop_front(); } elementList.push_back(new SequenceMovement("DUMMY")); } if((w.getPlaymode()=="KickOff_Left" || w.getPlaymode()=="KickOff_Right") && w.getUnum() == 10 && start_flag == true){ elementList.push_front(new Kick()); start_flag = false; } else if((w.getPlaymode()=="KickOff_left" || w.getPlaymode()=="KickOff_Right") && start_flag == true){ elementList.push_back(new SequenceMovement("DUMMY")); start_flag = false; } rtn = elementList.front()->getNextAngle(w); if(beam_flag){ rtn += ss.str(); beam_flag = false; } if (elementList.front()->isFinished()) { ElementBase* tmp = elementList.front(); delete tmp; elementList.pop_front(); } if (finishAllChild(w)) { updateFinishFlag(w); } return rtn; }
AdjustToBall::AdjustToBall(World& w){ finish_flag = false; for(int i=0; i<2; i++){ ballpos[i] = w.getBXY(i); bal[i] = w.getBAL(i); } conf_ballpos = w.confBXY(); conf_bal = w.confBAL(); x = w.getXY(0); y = w.getXY(1); conf_XY = w.confXY(); t_count = abs(15 * bal[1] / 360); judgement(w); updateFinishFlag(w); }