robocode机器人1.0版
来源:互联网 发布:vb自学网站 编辑:程序博客网 时间:2024/04/29 17:09
问题及代码:
package com.anbo.g1;import robocode.*;import java.awt.*;import java.awt.Event;import javax.lang.model.element.ExecutableElement;import javax.swing.text.Document;import robocode.AdvancedRobot;import robocode.HitByBulletEvent;import robocode.HitWallEvent;import robocode.Robot;import robocode.ScannedRobotEvent;public class YanAn extends AdvancedRobot{private double eDist; //对方的距离private double move; //移动的距离private double radarMove = 45; //雷达移动的角度private double dFirePower; //火力boolean movingForward;/** * run: Crazy's main run function */public void run() {eDist = 300;// 颜色setColors(Color.ORANGE, Color.BLUE, Color.RED, Color.WHITE, Color.GRAY);while(true){ //每过一个周期,运动随机的距离double period = 4*((int)(eDist/80)); //周期;敌人越接近,周期越短,移动越频繁//周期开始,则移动if(getTime()%period == 0){move = (Math.random()*2-1)*(period*8 - 25); setAhead(move + ((move >= 0) ? 25: -25));}//避免撞墙double heading = getHeadingRadians(); //取得bot方向的弧度数double x = getX() + move*Math.sin(heading); //移动move后将要达到的x坐标double y = getY() + move*Math.cos(heading); //移动move后将要达到的y坐标double dWidth = getBattleFieldWidth(); //战场的宽度double dHeight = getBattleFieldHeight(); //战场的长度//当(x,y)超过指定的范围,则反向移动moveif(x < 30 || x > dWidth-30 || y < 30 || y > dHeight-30){setBack(move);} turnRadarLeft(radarMove); //转动雷达 execute();}}public void onHitWall(HitWallEvent e) {// Bounce off!reverseDirection();}public void reverseDirection() {if (movingForward) {setBack(40000);movingForward = false;} else {setAhead(40000);movingForward = true;}}/** * onScannedRobot: Fire! */public void onScannedRobot(ScannedRobotEvent e) {eDist = e.getDistance(); //取得对方距离 radarMove = -radarMove; //设置雷达 double eBearing = e.getBearingRadians(); //取得和对方相对角度的弧度数 //将bot转动相对的角度,以后bot的运动将是以对方为圆心的圆周运动 setTurnLeftRadians(Math.PI/2 - eBearing); //转动炮管指向对方 setTurnGunRightRadians(robocode.util.Utils.normalRelativeAngle(getHeadingRadians() + eBearing - getGunHeadingRadians())); //根据对方距离射击 dFirePower = 400/eDist; if (dFirePower > 3) { dFirePower = 3; } fire(dFirePower);}/** * onHitRobot: Back up! */public void onHitRobot(HitRobotEvent e) {// If we're moving the other robot, reverse!if (e.isMyFault()) {reverseDirection();}}}
这是根据robcode所提供的机器人样板源代码及网上教程所编写的,还有很多不足,在移动走位上有很大缺陷
0 0
- robocode机器人1.0版
- robocode 创建机器人
- 利用Jython开发Robocode机器人
- Robocode 编写机器人
- Robocode 机器人坦克游戏开发环境介绍
- Robocode 机器人坦克游戏开发环境介绍
- Robocode 编写机器人 二
- Robocode 编写机器人 三
- Robocode 编写第一个机器人
- Robocode
- Robocode
- 世界robocode机器人的四大运动方式分析
- 智能机器人编程游戏robocode的运行代码简析
- 编写属于更有战斗力的Robocode机器人
- Robocode教程6——用eclipse来写你的机器人!
- Robocode教程6——用eclipse来写你的机器人!
- 了解Robocode
- Robocode介绍
- HDU 5615 Jam's math problem(水~)
- 数据库备份
- set容器
- isa指针的理解
- 未能同步iphone 因为这台电脑不再授权使用在此iPhone上购买的项目
- robocode机器人1.0版
- Sqldbx连接OracleX64位
- 不可以!
- Maven生命周期和插件(三)
- Windows Update在哪 Win10自动更新怎么关闭
- strtok,strtok_r
- 头像上传
- STL初讲
- QPushButton的简单美化