亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? crazytank.java

?? 以AIROBOT為平臺構建的一個智能機器人的java源碼。
?? JAVA
字號:
/*
該機器人的雷達具有跟蹤功能。
該機器人在遠離敵人時做無規則運動。
該機器人根據敵人的運動狀態提前開槍
*/

package Robot;

import AIRobot.event.*;
import AIRobot.robot.*;

public class CrazyTank extends Robot
{
	
	private double scannedTime;
    private double enemyX; //敵人的x坐標
	private double enemyY; //敵人的Y坐標
	private double velocity; //運動速度
	private double enemyVelocity; //敵人運動速度
	private double enemyDirection; //敵人車身方向
	private double enemyEnergy;//敵人的能量
	private double moveTime; //朝一個方向運動的時間
	private int bulletPower = 1 ;
	private boolean enemyDeath = false;
    //執行函數
    public void work()
    {
	    doRadar();
		if (enemyEnergy == 0)
		{
			doMove3();
			doGun1();
		}
		else
		{
			if (distance(getBody().getX(),getBody().getY(),enemyX,enemyY) < 150) 
			{
				doMove3();
				doGun3();
			}
			else 
			{
				doMove1();
				doGun1();
			}
		}
	}

    //一輪戰斗開始
	public void onBegin(BeginEvent beginevent)
    {   //初始化
		scannedTime = -5;
		velocity = 8;
		moveTime = 25;
    }

    //掃描到敵人
   	public void onScannedRobot( ScannedRobotEvent  e )
	{
		scannedTime = e.getTime();
		enemyX = e.getX();
		enemyY = e.getY();
		enemyVelocity = e.getVelocity();
		enemyDirection = e.getHeading();
		enemyEnergy = e.getEnergy();
//		enemyX[posIndex] = e.getX();
//		enemyY[posIndex] = e.getY();
//		enemyVelocity[posIndex] = e.getVelocity();
//		enemyDirection[posIndex] = e.getHeading();
    }

    //撞到其他機器人
   	public void onHitRobot( HitRobotEvent  e )
	{
		//運動改變方向
		doGun3();
		doMove3();
	}

    //撞到墻
   	public void onHitWall( HitWallEvent  e )
	{
		//運動改變方向
		changeDirection();
	}

    //被子彈擊中
	//被敵人擊中,改變運動方向
	public void onHitByBullet( HitByBulletEvent  e )
	{
	}

	public void onRobotDeathEvent( RobotDeathEvent e )
	{
		enemyDeath = true;
	}
    
	/////////////////////////////////////////////////////////////////////
    //控制雷達單元
    private void doRadar()
	{
		//雷達鎖定
		if( getTime() - scannedTime > 3 ) getRadar().turn(Math.PI);
		else{
			//雷達轉向敵人,以實現鎖定
			double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
			double angle = turnAngle(getRadar().getHeading(),h);
			getRadar().turn(angle);
		}
	}
    //控制車身單元
	private void doMove1()
	{
		//運動改變方向 
		if( moveTime-- < 0 ) moveTime = 30;
		getBody().move(velocity);
		//隨機改變運動方向
		java.util.Random random = new java.util.Random();
		getBody().turn(random.nextFloat() * Math.PI* 2/3-Math.PI/3);
	}

	private void doMove2()
	{
		//改變運動方向始終側對敵人 
		if( moveTime-- < 0 ) moveTime = 25;
		getBody().move(velocity);
		double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
		double angle = turnAngle(getBody().getHeading(),h + Math.PI/2);
		getBody().turn(angle);
	}

	private void doMove3()
	{
		//改變運動方向面向敵人運動
		if( moveTime-- < 0 ) moveTime = 25;
		getBody().move(velocity);
		double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
		double angle = turnAngle(getBody().getHeading(),h);
		getBody().turn(angle);
	}
    
	//控制炮管單元
	private void doGun1()
	{
        //炮管轉向敵人要到達的位置
        double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
		double angle = turnAngle(enemyDirection,h);//敵人運動方向與h的夾角
		double bulletVelocity = 20 - 3 * 1;//子彈速度
		double gunangle = Math.asin( enemyVelocity * Math.sin(angle) / bulletVelocity);

		gunangle = h - gunangle ;//提前射擊的方向
		angle = turnAngle( getGun().getHeading(),gunangle );//提前射擊炮口需要轉過的角度
		getGun().turn(angle);//轉炮口
		if( !enemyDeath )
		{
			if ( getEnergy() > 1 ) getGun().fire(1);//開炮(能量1)
			else if ( enemyEnergy < 4 )getGun().fire(1);
		}
	}

	private void doGun3()
	{
		//炮管轉向敵人要到達的位置
		double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
		double angle = turnAngle(enemyDirection,h);//敵人運動方向與h的夾角
		double bulletVelocity = 20 - 3 * 3;//子彈速度
		double gunangle = Math.asin( enemyVelocity * Math.sin(angle) / bulletVelocity);

		gunangle = h - gunangle ;//提前射擊的方向
		angle = turnAngle( getGun().getHeading(),gunangle );//提前射擊炮口需要轉過的角度
		getGun().turn(angle);//轉炮口
		if( !enemyDeath )
		{
			if ( getEnergy() > 3 ) getGun().fire(3);//開炮(能量3)
			else if ( enemyEnergy < 6 )getGun().fire(3);
		}
	}
    //改變運動方向
	private void changeDirection()
	{
		moveTime = 50;
        velocity = - velocity ;
	}

	private void changeDirection2()
	{
		moveTime = 25;
		double h = heading(getBody().getX(),getBody().getY(),enemyX,enemyY);
		double angle = turnAngle(getBody().getHeading(),h + Math.PI/2);
		getBody().turn(angle);
	}
	/**
	 * 標準化一個弧度值,使得 0<= angle <2*PI
	 */
	public static double stdAngle(double angle)
	{
		while( angle >= 2*Math.PI ) angle -= 2*Math.PI;
		while( angle < 0 ) angle += 2*Math.PI;
		return angle;
	}

	/**
	 * 計算從 from 到 to 的最小轉動角度
	 */
	public static double turnAngle(double from, double to)
	{
		double turnAngle = stdAngle(to) - stdAngle(from);
		if( turnAngle > Math.PI ) turnAngle = turnAngle - 2*Math.PI;
		else if( turnAngle < -Math.PI ) turnAngle = turnAngle + 2*Math.PI;
		return turnAngle;
	}

	/**
	 * 計算兩點間的距離
	 */ 
	public static double distance(double x1, double y1, double x2, double y2)
	{
		return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	}

	/**
	 * 計算兩點連線的方向,此方向角在0到PI*2之間
	 */
	public static double heading(double x1, double y1, double x2, double y2)
	{
		double heading;
		// special check
		double distance = distance(x1,y1,x2,y2);
		if( distance == 0 ) return 0;
		// normal condition
		heading = Math.acos((x2-x1)/distance); //一二象限
		if( y1 > y2 ) heading = 2 * Math.PI - heading; //三四象限
		return heading;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀国产一区二区三区在线播放| 懂色av一区二区三区蜜臀| 国产99久久久国产精品免费看| 91在线一区二区| 久久综合av免费| 午夜精品一区二区三区免费视频| 成人精品视频.| 精品国产1区二区| 日韩av中文字幕一区二区| 91黄色小视频| 亚洲精品久久嫩草网站秘色| 国产69精品久久99不卡| 久久久久久久久久久久久久久99| 日韩国产欧美视频| 欧美日韩精品系列| 亚洲综合在线电影| 91浏览器在线视频| 裸体健美xxxx欧美裸体表演| 欧美剧在线免费观看网站| 亚洲影视在线观看| 在线观看免费成人| 亚洲女女做受ⅹxx高潮| 9久草视频在线视频精品| 欧美极品xxx| 成人av手机在线观看| 欧美激情一区二区三区在线| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美激情视频在线观看一区二区三区 | 一本久久a久久免费精品不卡| 欧美成人vr18sexvr| 天天色 色综合| 欧美视频一区在线观看| 亚洲一区二区三区四区五区黄| 91国偷自产一区二区三区观看| 《视频一区视频二区| aaa欧美日韩| 一区二区三区波多野结衣在线观看| 一本色道a无线码一区v| 夜夜操天天操亚洲| 国产精品美女久久久久aⅴ国产馆| 国产一区二区三区综合| 亚洲国产高清在线观看视频| hitomi一区二区三区精品| 成人免费在线播放视频| 色婷婷久久久亚洲一区二区三区 | 色激情天天射综合网| 91丨porny丨国产| 欧美xxxxxxxxx| 经典三级一区二区| 亚洲国产精品激情在线观看| av网站一区二区三区| 自拍偷拍国产亚洲| 欧美精品 国产精品| 精品在线免费观看| 国产精品进线69影院| 国产精品毛片a∨一区二区三区| 色哟哟日韩精品| 日韩成人一区二区三区在线观看| 久久久久国产精品人| 在线亚洲一区观看| 久久国产尿小便嘘嘘尿| 中文字幕av一区 二区| 欧美日韩国产欧美日美国产精品| 激情偷乱视频一区二区三区| 亚洲日本在线a| 欧美体内she精高潮| 男女男精品视频| 中文字幕av一区二区三区| 在线观看91视频| 国产一区二区三区综合| 亚洲自拍偷拍av| 久久九九99视频| 欧美精品一级二级| www.亚洲色图| 久久精工是国产品牌吗| 亚洲精品精品亚洲| 久久久久久久久久电影| 在线播放亚洲一区| eeuss影院一区二区三区| 美国十次了思思久久精品导航| 综合在线观看色| 亚洲精品一区二区三区在线观看| 91麻豆精品在线观看| 国产麻豆精品一区二区| 日本在线不卡视频一二三区| 日韩毛片一二三区| 久久色.com| 日韩小视频在线观看专区| 欧洲一区二区av| 成人精品免费看| 日韩一卡二卡三卡| kk眼镜猥琐国模调教系列一区二区 | 成人深夜在线观看| 九色综合狠狠综合久久| 日韩精品视频网| 亚洲精品国产精品乱码不99| 欧美极品另类videosde| 久久久久97国产精华液好用吗| 欧美精品久久一区| 在线观看三级视频欧美| 91在线观看污| av一区二区三区在线| 成人毛片视频在线观看| 国产精品一品二品| 久久99精品国产91久久来源| 蜜臀91精品一区二区三区| 天天影视网天天综合色在线播放| 亚洲中国最大av网站| 亚洲一区二区在线免费看| 亚洲午夜羞羞片| 97se亚洲国产综合自在线观| 懂色一区二区三区免费观看| 成人中文字幕合集| 99久久综合色| 91丨porny丨在线| 色老头久久综合| 欧美色网站导航| 欧美久久久久久久久中文字幕| 欧美日韩精品三区| 欧美一区二区三区四区视频| 欧美一级理论片| 久久婷婷国产综合精品青草| 欧美国产综合色视频| 中文字幕一区二区三区不卡| 日韩理论电影院| 亚洲va欧美va天堂v国产综合| 日韩av电影免费观看高清完整版| 久久精品国产色蜜蜜麻豆| 国产在线播放一区| thepron国产精品| 欧美日韩一区二区三区不卡 | 在线欧美日韩精品| 欧美精品粉嫩高潮一区二区| 日韩欧美一级二级| 中文字幕一区免费在线观看| 亚洲码国产岛国毛片在线| 午夜精品在线看| 国产一区二区三区不卡在线观看| 成人国产亚洲欧美成人综合网| 色狠狠综合天天综合综合| 日韩欧美第一区| 日韩一区在线看| 人人狠狠综合久久亚洲| 成人网男人的天堂| 91.com视频| 亚洲欧洲在线观看av| 日韩电影在线观看电影| 成人国产免费视频| 欧美精品免费视频| 国产精品成人一区二区三区夜夜夜| 一区二区三区**美女毛片| 精品一区二区三区久久| 色综合天天综合在线视频| 欧美va亚洲va在线观看蝴蝶网| 最新高清无码专区| 激情欧美一区二区| 欧美色图在线观看| 国产精品少妇自拍| 蜜臀av一区二区在线观看| 99精品在线观看视频| 日韩欧美国产1| 亚洲一区二区三区美女| 国产精品1024久久| 欧美性生活一区| 国产精品免费视频观看| 日本一不卡视频| 在线亚洲+欧美+日本专区| 国产亚洲一区二区三区四区| 天天综合日日夜夜精品| 色综合久久久久综合99| 26uuu另类欧美亚洲曰本| 日韩福利电影在线观看| 91丨国产丨九色丨pron| 国产精品水嫩水嫩| 国产综合久久久久久久久久久久| 欧美欧美欧美欧美| 亚洲一本大道在线| 97超碰欧美中文字幕| 国产精品视频一二三| 日韩一级二级三级| 三级不卡在线观看| 欧美日韩免费一区二区三区视频| 亚洲同性同志一二三专区| 高清国产一区二区| 久久久久久免费毛片精品| 看电视剧不卡顿的网站| 欧美一级欧美一级在线播放| 日韩精品三区四区| 3d成人动漫网站| 日韩电影免费一区| 欧美一二三在线| 男女男精品视频| 欧美成人三级电影在线| 免费日韩伦理电影| 精品久久久久久无| 久久91精品久久久久久秒播| 精品少妇一区二区三区视频免付费 | 国产一区视频导航| 久久久久国产一区二区三区四区 | 精品国产免费一区二区三区四区|