/* produce a jaggy path - for debugging. If abs is set, move to first coordinate absolutely. If abs is not set, move to first coordinate relatively, and traverse path in the opposite direction. */ static int svg_jaggy_path(FILE *fout, point_t *pt, int n, int abs) { int i; point_t cur, prev; if (abs) { cur = prev = pt[n-1]; svg_moveto(fout, dpoint(cur)); for (i=0; i<n; i++) { if (pt[i].x != cur.x && pt[i].y != cur.y) { cur = prev; svg_lineto(fout, dpoint(cur)); } prev = pt[i]; } svg_lineto(fout, dpoint(pt[n-1])); } else { cur = prev = pt[0]; svg_rmoveto(fout, dpoint(cur)); for (i=n-1; i>=0; i--) { if (pt[i].x != cur.x && pt[i].y != cur.y) { cur = prev; svg_lineto(fout, dpoint(cur)); } prev = pt[i]; } svg_lineto(fout, dpoint(pt[0])); } newline = 1; shiptoken(fout, "z"); return 0; }
inline PPositionOurGoalKick(const BeliefState& state) : Play(state) { name = "PositionOurGoalKick"; assert(HomeTeam::SIZE == 5); setTimeout(100, 1); PositionPlay = PLAYTYPE_YES; AttackPlay = PLAYTYPE_NO; Tactic::Param param; Vector2D<int> finalPoint ; /* for goalie */ roleList[0].push_back(std::make_pair(Tactic::GoalieOur, param)); /*Vector2D<int> dpointg(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2),state.ballPos.y); param.PositionP.x = ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2) ; param.PositionP.y = state.ballPos.y; param.PositionP.finalSlope = 0; param.PositionP.align = false ; roleList[0].push_back(std::make_pair(Tactic::Position,param)); *//* Role 1 - Defender 1*/ Vector2D<int> dpoint0(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*9),-1*(OUR_GOAL_MAXY + 2*BOT_RADIUS)); finalPoint = position_our_bot(&state,dpoint0,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0 ; roleList[1].push_back(std::make_pair(Tactic::Position,param)); // Role 2 Vector2D<int> dpoint(ForwardX(-HALF_FIELD_MAXX/2),HALF_FIELD_MAXY/2); finalPoint = position_our_bot(&state,dpoint,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; roleList[2].push_back(std::make_pair(Tactic::Position, param)); //Role 3 Vector2D<int> dpoint1(ForwardX(-CENTER_CIRCLE_DIAMETER/2),HALF_FIELD_MAXY/4); finalPoint = position_our_bot(&state,dpoint1,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; roleList[3].push_back(std::make_pair(Tactic::Position, param)); //Role 4 Vector2D<int> dpoint2(ForwardX(HALF_FIELD_MAXX/6),-HALF_FIELD_MAXY/2); finalPoint = position_our_bot(&state,dpoint2,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; roleList[4].push_back(std::make_pair(Tactic::Position, param)); computeMaxTacticTransits(); }
//dessin d'une ligne void trace(Point p1,Point p2,Uint32 couleur){ double x = p1.x, y = p1.y; double inc_x = p2.x - p1.x, inc_y = p2.y - p1.y; int m = Max(abs(inc_x), abs(inc_y)); inc_x /= m; inc_y /= m; for(; m >= 0; m--) { dpoint(point((unsigned int)x, (unsigned int)y), couleur); x += inc_x; y += inc_y; } }
inline PPositionOurPenalty(const BeliefState& state) : Play(state) { printf("Posiition our penalty is being executed"); name = "PositionOurPenalty"; PositionPlay = PLAYTYPE_YES; AttackPlay = PLAYTYPE_NO; assert(HomeTeam::SIZE ==5); Tactic::Param param; param.PositionP.align = -PI; Vector2D<int> finalpoint ; /* Role 0 - Goalie*/ roleList[0].push_back(std::make_pair(Tactic::GoalieOur,param)); /* Role 1 - Position 1*/ //shooter param.PositionP.x = state.ballPos.x - ForwardX(3*BOT_RADIUS);// state.ballPos.x - 2*BOT_RADIUS ; param.PositionP.y = state.ballPos.y; param.PositionP.finalSlope = 0; roleList[1].push_back(std::make_pair(Tactic::Position,param)); /* Role 1 - Position 2*/ Vector2D<int> dpoint1(-ForwardX(2*BOT_RADIUS),0); finalpoint = position_our_bot(&state,dpoint1,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; roleList[2].push_back(std::make_pair(Tactic::Position,param)); /* Role 1 - Position 3*/ //shooter Vector2D<int> dpoint(-ForwardX(2*BOT_RADIUS),HALF_FIELD_MAXY/2); finalpoint = position_our_bot(&state,dpoint,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; roleList[3].push_back(std::make_pair(Tactic::Position,param)); /* Role 1 - Position 4*/ Vector2D<int> dpoint3(-ForwardX(2*BOT_RADIUS),-HALF_FIELD_MAXY/2); finalpoint = position_our_bot(&state,dpoint3,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; roleList[4].push_back(std::make_pair(Tactic::Position,param)); computeMaxTacticTransits(); }
virtual void reevaluateRoleParams() { { Vector2D<int> finalpoint; Tactic::Param ¶m = roleList[1][0].second; param.PositionP.x = state.ballPos.x - ForwardX(3*BOT_RADIUS);// state.ballPos.x - 2*BOT_RADIUS ; param.PositionP.y = state.ballPos.y; param.PositionP.align = true; param.PositionP.finalSlope = 0; } { Vector2D<int> finalpoint; Tactic::Param ¶m = roleList[2][0].second; Vector2D<int> dpoint1(-ForwardX(2*BOT_RADIUS),0); finalpoint = position_our_bot(&state,dpoint1,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; } { { printf("pop"); Vector2D<int> finalpoint; Tactic::Param ¶m = roleList[3][0].second; Vector2D<int> dpoint(-ForwardX(2*BOT_RADIUS),HALF_FIELD_MAXY/2); finalpoint = position_our_bot(&state,dpoint,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; } } { Vector2D<int> finalpoint; Tactic::Param ¶m = roleList[4][0].second; Vector2D<int> dpoint3(-ForwardX(2*BOT_RADIUS),-HALF_FIELD_MAXY/2); finalpoint = position_our_bot(&state,dpoint3,0); param.PositionP.x = finalpoint.x; param.PositionP.y = finalpoint.y; param.PositionP.finalSlope = 0; } printf("reevaling params in OurFreeKick. ballPos = %d, %d\n", state.ballPos.x, state.ballPos.y); }
virtual void reevaluateRoleParams() { /* { Tactic::Param ¶m = roleList[0][0].second; param.PositionP.x = ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2) ; param.PositionP.y = state.ballPos.y; param.PositionP.finalSlope = 0; param.PositionP.align = false ; }*/ { Vector2D<int> finalPoint; Tactic::Param ¶m = roleList[1][0].second; Vector2D<int> dpoint0(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*9),-1*(OUR_GOAL_MAXY + 2*BOT_RADIUS)); finalPoint = position_our_bot(&state,dpoint0,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0 ; } { Vector2D<int> finalPoint; Tactic::Param ¶m = roleList[2][0].second; Vector2D<int> dpoint(ForwardX(-HALF_FIELD_MAXX/2),HALF_FIELD_MAXY/2); finalPoint = position_our_bot(&state,dpoint,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; } { Vector2D<int> finalPoint; Tactic::Param ¶m = roleList[3][0].second; Vector2D<int> dpoint1(ForwardX(-CENTER_CIRCLE_DIAMETER),HALF_FIELD_MAXY/4); finalPoint = position_our_bot(&state,dpoint1,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; } { Vector2D<int> finalPoint; Tactic::Param ¶m = roleList[4][0].second; Vector2D<int> dpoint2(ForwardX(HALF_FIELD_MAXX/6),-HALF_FIELD_MAXY/2); finalPoint = position_our_bot(&state,dpoint2,0); param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ; param.PositionP.finalSlope = 0; } printf("reevaling params in OurFreeKick. ballPos = %d, %d\n", state.ballPos.x, state.ballPos.y); }
dpoint::dpoint(const float x, const float y) {//:QPointF(x,y){ dpoint(); this->setX(qreal(x)); this->setY(qreal(y)); //rot = QPointF(); }
dpoint::dpoint(const QPointF& point) {//: QPointF(point){ dpoint(); this->setX(point.x()); this->setY(point.y()); //rot = QPointF(); }
BOOL CPolylineCreatorTracker::CreatePolyline(CWnd* pWnd, CDPoint point, CSnapper* pSnapper) { // don't handle if capture already set if (::GetCapture() != NULL) return FALSE; AfxLockTempMaps(); // protect maps while looping m_bErase = FALSE; m_bFinalErase = FALSE; // set capture to the window which received this message pWnd->SetCapture(); ASSERT(pWnd == CWnd::GetCapture()); pWnd->UpdateWindow(); m_Points.AddTail(new CDPOINT(point)); CPoint LastPoint(point); // get DC for drawing CDC* pDrawDC; // otherwise, just use normal DC pDrawDC = pWnd->GetDC(); ASSERT_VALID(pDrawDC); BOOL bMoved = FALSE; // get messages until capture lost or cancelled/accepted for (;;) { MSG msg; VERIFY(::GetMessage(&msg, NULL, 0, 0)); if (CWnd::GetCapture() != pWnd) break; if(msg.message == WM_MOUSEMOVE) DispatchMessage(&msg); switch (msg.message) { // handle movement/accept messages case WM_MOUSEMOVE: { // handle resize cases (and part of move) CPoint point; ::GetCursorPos(&point); pWnd->ScreenToClient(&point); if((::GetKeyState(VK_SHIFT) & 0x8000)!=0) { CDPoint *pLastPoint = (CDPoint*)m_Points.GetTail(); if(pLastPoint!=NULL) { CDPOINT ppp = CDPoint(point)-(*pLastPoint); if(ABS(ppp.x)>ABS(ppp.y)) ppp.y=0; else ppp.x=0; point = *pLastPoint+ppp; } } if(pSnapper!=NULL) pSnapper->FixSnapTo(&point); if (LastPoint != point) { m_bErase = FALSE; DrawTracker(point, pDrawDC, pWnd); bMoved = TRUE; } LastPoint = point; } break; case WM_LBUTTONDOWN: { // handle resize cases (and part of move) CPoint point; ::GetCursorPos(&point); pWnd->ScreenToClient(&point); CDPoint dpoint(point); if((::GetKeyState(VK_SHIFT) & 0x8000)!=0) { CDPoint *pLastPoint = (CDPoint*)m_Points.GetTail(); if(pLastPoint!=NULL) { CDPOINT ppp = dpoint-(*pLastPoint); if(ABS(ppp.x)>ABS(ppp.y)) ppp.y=0; else ppp.x=0; dpoint = *pLastPoint+ppp; } } if(pSnapper!=NULL) pSnapper->FixSnapTo(&dpoint); point = dpoint; if (LastPoint != dpoint) { m_bErase = FALSE; DrawTracker(point, pDrawDC, pWnd); } m_Points.AddTail(new CDPoint(dpoint)); //the tracker will not erease the last line if(m_PointsLast!=NULL) delete []m_PointsLast; bMoved = FALSE; m_PointsLast = NULL; LastPoint = point; } break; // handle cancel messages case WM_KEYDOWN: if (msg.wParam != VK_ESCAPE) break; case WM_LBUTTONDBLCLK: case WM_RBUTTONDOWN: { if (bMoved) { m_bErase = m_bFinalErase = TRUE; DrawTracker(point, pDrawDC, pWnd); } UINT uiCount = GetPointsCount(); if(uiCount>1)//erace all the line { LPPOINT lpPoints = new POINT[uiCount]; LPCDPOINT lpDPoints = new CDPOINT[uiCount]; GetPoints(lpDPoints); for(UINT ui=0; ui<uiCount; ui++) lpPoints[ui] = lpDPoints[ui]; CLineTracker::DrawDragPolyLine(pDrawDC, lpPoints, 1, NULL, 1, uiCount); delete []lpPoints; delete []lpDPoints; } } goto ExitLoop; // just dispatch rest of the messages default: DispatchMessage(&msg); break; } } ExitLoop: pWnd->ReleaseDC(pDrawDC); ReleaseCapture(); AfxUnlockTempMaps(FALSE); // restore rect in case bMoved is still FALSE m_bFinalErase = FALSE; m_bErase = FALSE; // return TRUE only if rect has changed return GetPointsCount()>1; }