?? worldmodel.h
字號(hào):
/* * Copyright 2002-2005, Mersad Team, Allameh Helli High School (NODET). * * This program is free software, you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * This file is created by: Ahmad Boorghany * and is modified by: Mostafa Rokooey, Sassan Haradji * Darioush Jalali * * Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. * For more information please read README file.*/#ifndef __WORLD_MODEL_H#define __WORLD_MODEL_H#include <vector>#include <set>#include <Ball.h>#include <Body.h>#include <Timer.h>#include <Config.h>#include <Object.h>#include <Player.h>#include <FieldData.h>#include <SExpression.h>#include <KickCalculate.h>#include <InterceptCalculate.h>#include <string>#include <map>#include <vector>#ifndef NULL# define NULL 0#endif // NULL#define FLAGS_NUM 53#define GOALS_NUM 2#define LINES_NUM 4#define FULL_PLAYERS_NUM 11#define HALF_PLAYERS_NUM 20#define QUARTER_PLAYERS_NUM 30#define CHANGE_PLACE_SURE_ANGLE 5#define CHANGE_PLACE_SURE_DIST 2#define PUT_OUT_VIS_SURE_DIST 0.2#define VIEW_PARTS_NUM 9#define VIEW_PART_SIZE 45#define EXTRA_VIEW_SIZE ((VIEW_PARTS_NUM * VIEW_PART_SIZE - 360) \ / (float)VIEW_PARTS_NUM)#define MAX_SEE_DELTA_CYCLE 50class Form;class WorldModel{protected: Timer *timer; Param serverParam; Param playerParam; std::vector<Param> playerTypes; FieldData fieldData; KickCalculate curKickCalculate; InterceptCalculate curInterCalculate; std::map<unsigned, std::pair<std::vector<Vector>, unsigned> > correlationMap; std::vector<Vector> ourPosition; std::set<unsigned> markers; unsigned seeCycle; unsigned seeTime; unsigned curCycle; unsigned curTime; unsigned refereeHearTime; unsigned playModeRemainCycle; unsigned playOnStartCycle; Side fieldSide; PlayMode playMode; VirtualPlayMode virtualPlayMode; bool bodyReplacedFlag; float viewPartDirs[VIEW_PARTS_NUM]; unsigned viewPartCycles[VIEW_PARTS_NUM]; unsigned freeKickAdvicerSayCycle; unsigned freeKickAdvicerSayNumber; BallStatus ballStatus; // Heared Vars float hearedSuggestPassDir; float hearedSuggestPassSpeed; float hearedSuggestPassWeight; unsigned hearedSuggestPassNum; unsigned hearedPlanTime; unsigned hearedPlanSender; std::string hearedPlanInfo; // Remain until next hear char hearedHeader; unsigned hearedSender; // Remain until next cycle int planStatusSender; unsigned hearedPlanStatus; unsigned hearedInterceptNum; unsigned hearedSuggestPassTime; // Objects on the field FieldFlag *flags[FLAGS_NUM]; FieldGoal *goals[GOALS_NUM]; FieldLine *lines[LINES_NUM]; Ball *ball; Body *body; Player *fullPlayers[2][FULL_PLAYERS_NUM]; Player *halfPlayers[2][HALF_PLAYERS_NUM]; Player *quarterPlayers[QUARTER_PLAYERS_NUM]; unsigned flagsNum; unsigned goalsNum; unsigned linesNum;public: WorldModel(); WorldModel(const WorldModel &worldModelCopy); virtual ~WorldModel(); void copyFrom(const WorldModel &worldModelCopy, bool constructed = true); void initServerParam(const SExpression &exp); virtual void initPlayerParam(const SExpression &exp); virtual void initPlayerType(const SExpression &exp); virtual void parseSee(const SExpression &exp); virtual void parseFlag(const SExpression &exp); virtual void parseGoal(const SExpression &exp); virtual void parseLine(const SExpression &exp); virtual void parseBall(const SExpression &exp); virtual void parsePlayer(const SExpression &exp); virtual void parseHear(const SExpression &exp); virtual void parseRefereeHear(const SExpression &exp); virtual void parseTeammateCoachHear(const SExpression &exp); virtual void selfHear(const std::string &message); virtual void teammateHear(float hearDir, unsigned senderNum, const std::string &message); void opponentHear(float hearDir, const std::string &message); void suggestPassTmmHear(const std::string &message, unsigned senderNum); void routinTmmHear(const std::string &message, unsigned senderNum);// void routinTmmHearWithoutBall(const std::string &message, unsigned senderNum); void beforePassTmmHear(const std::string &message, unsigned senderNum); void beforePassRelatedTmmHear(const std::string &message, unsigned senderNum); void freeKickKickerHear(const std::string &messager, unsigned senderNum); void planTmmHear(const std::string &message, unsigned senderNum); void radarHear(const std::string &message, unsigned senderNum); void updatePlayModeRemainCycleAfterSenseBody(); virtual void updateAfterSenseBody(); void parseChangePlayerType(const SExpression &exp); void updateCurKickCalculate(); void updateCurInterCalculate(); void resetObjects(); void updateObjects(); void completeUpdateObjects(); void replaceBodyInPlayersList(unsigned bodyUniNum); void simulateObjects(const Body &lastBody, const Command *bodyCycleCommand); virtual void logObjects(); void updateMarkingPlayers(); void putOutOfVisibleAngle(Object &object); void putOutOfVisibleDistance(Object &object); void changePosDevBySee(Object &object); void initViewPartDirs(); void resetSeeDeltaCycles(); void updateSeeDeltaCyclesAfterSee(); void updateSeeDeltaCyclesAfterSenseBody(); float getSeeDeltaCycle(float dir, float minRate = 0.35) const; float getSeeViewPartValue(unsigned viewPartNum, float headDir, float viewAngle) const; void updateBallStatus(); void resetHearedVarsBeforeHear(); void resetHearedVarsAfterSenseBody(); int checkPlayModeForPenalty() const; // Some Utilities int getOppPlayersBeforeLine(float lineX) const; int getOppPlayersBetweenLines(float line1X, float line2X) const; bool isBallKickable() const; bool isBallKickable(const Ball &theBall) const; bool isBallCatchable() const; bool isBallCatchable(const Ball &theBall) const; bool isBallInTmmKickable() const; bool isBallInTmmKickable(const Ball &theBall) const; bool isBallInOppKickable() const; bool isBallInOppKickable(const Ball &theBall) const; bool isBallInField() const; static bool isBallInField(const Ball &theBall); bool isOppBallShooted(const Ball &theBall) const; bool isOppBallShootedToTir(const Ball &theBall, float upYTirPoint, float downYTirPoint, Point &shootIntercept) const; static bool isPlayerInOurField(const Player &player); static bool isPlayerInOppField(const Player &player); static bool isPlayerInOurShootArea(const Player &player); static bool isPlayerInOppShootArea(const Player &player); float getTmmDefenseLine() const; float getOppOffsideLine(bool isBallFlag = true) const; float getTmmOffsideLine(bool isBallFlag = true) const; float getBallOutDistance() const; float getOppLocalOffLine() const; static float getOutDistance(const Point &point); const Player *getNearestOppToBall() const; const Player &getNearestTmmToBall() const; const Player &getNearestTmmToPoint(const Point & point) const; const Player* getNearestTmmToPointFromList(const Point & point, std::string players = "", std::string blackPlayers = "") const; const Player *getTmmGoalie() const; const Player *getOppGoalie() const; Point getOppDefenseMedium() const; Point getOppDefenseYMin() const; Point getOppDefenseYMax() const; float getSecurityStatus(const Player &player, float oval_a = .4, float oval_b = .5) const; float getPathSecurityStatus(const Player &srcPlayer, const Point trgPoint, float forwardRate) const; // Getting functions bool isBodyReplaced() const; unsigned getFlagsNum() const; unsigned getGoalsNum() const; unsigned getLinesNum() const; unsigned getSeeCycle() const; unsigned getCurCycle() const; unsigned getCurTime() const; Side getFieldSide() const; PlayMode getPlayMode() const; VirtualPlayMode getVirtualPlayMode() const; BallStatus getBallStatus() const; unsigned getPlayOnPastCycles() const; unsigned getRefereeHearTime() const; const std::set<unsigned>& getMarkers() const; float getViewPartDir(unsigned num) const; unsigned getViewPartCycle(unsigned num) const; unsigned getFreeKickAdvicerSayCycle() const; unsigned getFreeKickAdvicerSayNumber() const; char getHearedHeader() const; bool getMustAttention() const; float getHearedSuggestPassDir() const; float getHearedSuggestPassSpeed() const; float getHearedSuggestPassWeight() const; unsigned getHearedSender() const; unsigned getHearedPlanStatus() const; unsigned getHearedInterceptNum() const; unsigned getHearedRequestPassNum() const; unsigned getHearedSuggestPassNum() const; unsigned getHearedSuggestPassTime() const; int getPlanStatusSender() const; const std::string& getHearedPlanInfo() const; unsigned getHearedPlanTime() const; unsigned getHearedPlanSender() const; const Timer &getTimer() const; unsigned getPlayModeRemainCycle() const; const Param &getServerParam() const; const Param &getPlayerParam() const; const Param &getPlayerType(unsigned num) const; const KickCalculate &getCurKickCalculate() const; const InterceptCalculate &getCurInterCalculate() const; const Ball &getBall() const; const Body &getBody() const; const Player &getFullPlayer(TeamId teamId, unsigned num) const; const Player &getHalfPlayer(TeamId teamId, unsigned num) const; const Player &getQuarterPlayer(unsigned num) const; // Setting functions void setBodyReplaced(bool bodyReplacedFlagArg); void setFlagsNum(unsigned flagsNumArg); void setGoalsNum(unsigned goalsNumArg); void setLinesNum(unsigned linesNumArg); void setSeeCycle(unsigned seeCycleArg); void setCurCycle(unsigned curCycleArg); void setCurTime(unsigned curTimeArg); void setFieldSide(Side fieldSideArg); void setVirtualPlayMode(VirtualPlayMode virtualPlayModeArg); Timer &setTimer(); Ball &setBall(); Body &setBody(); Player &setFullPlayer(TeamId teamId, unsigned num); Player &setHalfPlayer(TeamId teamId, unsigned num); Player &setQuarterPlayer(unsigned num); FieldData &setFieldData();};#endif // __WORLD_MODEL_H
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -