ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA乐趣之坦克大战系列7

2019-07-25 17:55:42  阅读:284  来源: 互联网

标签:JAVA 扫描 大战 对方 乐趣 previousEnergy 方向 雷达 运动


前言
本篇主要介绍Robocode中如何对敌方进行扫描以便于更好的通过扫描结果不断改变自身的移动和***方式。
扫描策略
扫描策略的主要目标就是能够更好的锁定对方,即让敌方在我们的视野范围之内,或者使用更专业的名词—雷达锁定。
为了锁定目标,我们可以把雷达往反方向扫描。因为雷达旋转很快,而雷达的方向与对方坦克方向的偏移量不大,机器人是有一定大小的。于是扫描线在目标身上来回扫动,实现了雷达锁定。
代码示例如下:
1.double RadarOffset=敌人的绝对角度-雷达方向  
2.setTurnRadarRightRadians( RadarOffset * 1.2 ); 
移动策略
移动的方式有很多种,都可以根据对手的情况设定自己的移动方式,例如:
1.明显有规律的运动:
绕墙运动
2.随机性很强的运动:
官方案例中的crazy坦克。
3.对瞄准有干扰性的主动运动:
先以一种很明显的规律运动,等敌人误以为我是那种运动后,立刻改变为另一种运动规律,等敌人意识到现在的运动规律后,我又改为原来那种,来迷惑敌人。
4.依据对方发弹或者运动而采取的被动运动
该种情况可以引出如何让Robot躲避***,以及如何设定自己的瞄准策略(将在下一篇中讲解)。
躲避***:
坦克对于周围环境的了解非常有限。但是,它看不到×××。但是由于对方发射×××时自身的能量会减少,通过判断对方的能量等级的变化,还是可以得知对方是否正在发射×××。(一般在单挑模式下)
示例:
1.public void onScannedRobot(ScannedRobotEvent e)   
2.{// previousEnergy 记录前一次的能量  
3.    double changeInEnergy = previousEnergy - e.getEnergy();  
4.     if (changeInEnergy>0 && changeInEnergy<=3) //对方能量变化{  
5.     //躲避!  
6.    turnLeft(90 - e.getBearing());//转向×××方向的侧方向    
7.        setAhead((e.getDistance()/4+25)); //前进以避开×××            
8.     }  
9.      previousEnergy = e.getEnergy();  
10. }  

标签:JAVA,扫描,大战,对方,乐趣,previousEnergy,方向,雷达,运动
来源: https://blog.51cto.com/14256902/2423596

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有