⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worldmodel.h

📁 2006年世界杯足球赛2D仿真组第16名的源代码。在此代码上随便改改
💻 H
字号:
/* *  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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -