/**
* Name:匀加速
* Written by pt
* Compiler:Microsoft Visual C++
*/
#include <airobot/c/SimpleRobot.h>
double moveVelocity;
double time;
double headingTo;
/**
* 每个单位时间都会触发
*/
void onTick(struct TickAction* action)
{
double angle = bearing(headingTo, getHeading());
if (fabs(angle) < 0.0001)
{
turn(0);
move(moveVelocity);
if (time >= 40)
{
moveVelocity += 2;
time = 0;
}
else
{
time++;
}
}
else
{
move(0);
turn(angle);
}
if (moveVelocity > 8)
{
moveVelocity = -8;
}
}
/**
* 当开始一轮新的比赛时触发
*/
void onRoundBegin(struct RoundBeginAction* action)
{
time = 0;
moveVelocity = 0;
}
/**
* 当撞到其它机器人时触发
*/
void onHitRobot(struct HitRobotAction* action)
{
headingTo += PI;
}
/**
* 当撞到墙时触发
*/
void onHitWall(struct HitWallAction* action)
{
headingTo += PI;
}
/**
* 机器人程序入口
*/
int main(int argC, char* argV[])
{
tickHook = onTick;
roundBeginHook = onRoundBegin;
hitRobotHook = onHitRobot;
hitWallHook = onHitWall;
return startup(argC, argV);
}
(AI-TANK)做匀加速直线运动
最新推荐文章于 2021-06-13 14:17:22 发布