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

📄 worm.c

📁 偶然收集到的一个C语言源码
💻 C
字号:
#include <airobot/c/SimpleRobot.h>
#define MAX_SPARROWS 100  /*最多对付100个麻雀*/

double ex[MAX_SPARROWS];  /*记录麻雀x坐标的数组*/
double ey[MAX_SPARROWS];  /*记录麻雀y坐标的数组*/

double getSparrowSapor(double dist);
double getSparrowSapor(double dist);
double getSparrowSaporTotal(double x, double y);
void recordSparrowSapor();
void setMove();

void onTick(struct TickAction* action)
{
    setMove();
}

/**
 * 计算并返回指定距离下的麻雀味道大小,留到后面来实现
 */
double getSparrowSapor(double dist){
	return 0;
}

/**
 * 计算指定坐标点的总的麻雀味道大小,留到后面来实现
 */
double getSparrowSaporTotal(double x, double y){
	return 0;
}

/**
 * 记录所有麻雀的坐标
 */
void recordSparrowSapor(){
	int i;
	for(i=0; i<getOtherBots() && i<MAX_SPARROWS; i++){
		/*记录此麻雀的坐标*/
		ex[i] = getOpponentX(i);
		ey[i] = getOpponentY(i);
	}
}

/**
 * 远离麻雀的运动模块函数,必须是一个设置函数
 */
void setMove()
{
	recordSparrowSapor();
	
	double mx = getX();
	double my = getY();
	double angle = 0; /* 搜索角度 */
	double step  = toRadians(10); /* 搜索角度跨度,以达成36个搜索点的目标 */
	double radius = 40; /* 搜索半径 */
	
	/* 下面代码找出以自己为圆心,指定半径的圆上若干个点上麻雀味道最小的点 */
	double minSparrowSapor = 10000; /*一个非常大的值*/
	double minSparrowSaporX = 0;
	double minSparrowSaporY = 0;
	for(angle=0; angle<PI*2; angle+=step){
		/* 算出搜索点 */
		double nx = mx + cos(angle)*radius;
		double ny = my + sin(angle)*radius;
		/* 得到搜索点的麻雀味道大小 */
		double sparrowSapor = getSparrowSaporTotal(nx, ny);
		/* 是否比目前最小的还要小,如果是,记录坐标并更新最小值*/
		if(sparrowSapor < minSparrowSapor){
			minSparrowSapor = sparrowSapor;
			minSparrowSaporX = nx;
			minSparrowSaporY = ny;
		}
	}
	
	/* 下面代码让自己往目标点方向移动 */
	double myHeading = getHeading();
	/* 目标点相对自己的方向 */
	double moveToHeading = heading(mx, my, minSparrowSaporX, minSparrowSaporY);
    /* 需要转动的角度值 */ 
	double needTurn = bearing(moveToHeading, myHeading); 
	turn(needTurn);
	move(8); /*保持向前运动*/
}

//启动机器人程序
int main(int argC, char* argV[])
{
	tickHook = onTick;
	return startup(argC, argV);
}	

⌨️ 快捷键说明

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