如何解决;语法错误,静态导入仅在源级别为1.5或更高时可用;java中的机器人代码
我试图在robocode上编译robot,但它说“静态导入仅在源代码级别为1.5或更高时可用” 我不明白这是什么意思。 我在其他论坛上看到了Java的更新,但我的计算机已经安装了最后一个Java。我能做什么 这是我试图编译的代码:如何解决;语法错误,静态导入仅在源级别为1.5或更高时可用;java中的机器人代码,java,robocode,Java,Robocode,我试图在robocode上编译robot,但它说“静态导入仅在源代码级别为1.5或更高时可用” 我不明白这是什么意思。 我在其他论坛上看到了Java的更新,但我的计算机已经安装了最后一个Java。我能做什么 这是我试图编译的代码: package blir.dev; import robocode.*; import java.awt.Color; import static robocode.util.Utils.*; /** * Blixi - a robot by Travi
package blir.dev;
import robocode.*;
import java.awt.Color;
import static robocode.util.Utils.*;
/**
* Blixi - a robot by Travis Bruce
*/
public class Keen_Stalker extends AdvancedRobot {
//the direction we're moving
private int dir = 1;
//are we close to a wall? : are we close to a robot?
private boolean wall = false, rbt = false;
//enemy's energy
private double en = 100D;
/**
* run: Blixi's default behavior
*/
public void run() {
setColors(Color.BLACK, Color.DARK_GRAY, Color.DARK_GRAY);
setAdjustRadarForRobotTurn(true);
setAdjustGunForRobotTurn(true);
setAdjustRadarForGunTurn(true);
//if (bshot1 != 0) out.println("Main Gun Accuracy: " + (double) bhit1 / bshot1);
for (;;) {
if (getRadarTurnRemaining() == 0) {
//should only happen if we lose track of them, which should never happen
setTurnRadarRight(Double.POSITIVE_INFINITY);
}
//check if we're too close to the wall (50 pixels)
wall = cw(50, true);
execute();
}
}
/**
* onScannedRobot: What to do when you see another robot
*/
public void onScannedRobot(ScannedRobotEvent e) {
//check if we're too close to the other robot (150 pixels)
rbt = d(e.getDistance());
//absolute bearing
double absBear = getHeadingRadians() + e.getBearingRadians();
//track them with our radar
double radarTurn = normalRelativeAngle(absBear - getRadarHeadingRadians());
radarTurn += (radarTurn < 0 ? -1 : 1) * Math.atan(36.0 / e.getDistance());
setTurnRadarRightRadians(radarTurn);
//fire power the enemy used
double enemyPower = en - e.getEnergy();
if (enemyPower <= 3 && enemyPower > 0 && !cw(75, false)) {
//they seem to have fired
cd();
}
//record new energy
en = e.getEnergy();
//circle around them if we're close enough, move away if we're too close
setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2D));
setTurnGunRightRadians(normalRelativeAngle(absBear - getGunHeadingRadians() -
Math.asin(e.getVelocity() * Math.sin(Math.PI - absBear + e.getHeadingRadians()) / Rules.getBulletSpeed(Rules.MAX_BULLET_POWER))));
//fire!
setFire(Rules.MAX_BULLET_POWER);
//all power ahead!
setAhead(dir * 32);
}
public void onHitWall(HitWallEvent e) {
//out.println("Ahh! A wall!");
cd();
}
private boolean d(double d) {
if (d < 150) {
//we're close to the robot (within 150 pixels)
if (!rbt) {
//we're not already escaping the robot, so let's change direction
cd();
}
return true;
}
return false;
}
private boolean cw(int d, boolean cw) {
if (getX() < d || getY() < d || getBattleFieldWidth() - getX() < d || getBattleFieldHeight() - getY() < d) {
//we're close to the wall
if (!wall && cw) {
//we're not already escaping the wall, so let's change direction
cd();
}
return true;
}
return false;
}
private void cd() {
dir = -dir;
}
包blir.dev;
进口机器人代码。*;
导入java.awt.Color;
导入静态robocode.util.Utils.*;
/**
*布莱西-特拉维斯·布鲁斯的机器人
*/
公共级Keen_跟踪者扩展高级机器人{
//我们前进的方向
私有int dir=1;
//我们离墙近吗?:我们离机器人近吗?
私有布尔墙=false,rbt=false;
//敌方能量
专用双en=100D;
/**
*运行:Blixi的默认行为
*/
public void run(){
设置颜色(颜色。黑色,颜色。深灰色,颜色。深灰色);
设置AdjustRadarForRobotTurn(真);
setAdjustGunForRobotTurn(真);
setAdjustRadarForGunTurn(真);
//如果(bshot1!=0)输出打印LN(“主炮精度:”+(双)bhit1/bshot1);
对于(;){
如果(GetRadarTurnRestaining()==0){
//只有当我们失去他们的踪迹时才会发生,这是永远不会发生的
setTurnRadarRight(双正无穷大);
}
//检查我们是否离墙太近(50像素)
墙=cw(50,真);
执行();
}
}
/**
*当你看到另一个机器人时该怎么办
*/
CannedRobot上的公共空间(扫描机器人事件e){
//检查我们是否离另一个机器人太近(150像素)
rbt=d(如getDistance());
//绝对方位
双absBear=getHeadingRadians()+e.getBearingRadians();
//用我们的雷达追踪他们
double radarTurn=法线相对角度(absBear-getRadarHeadingRadians());
雷达天线+=(雷达天线<0?-1:1)*数学天线(36.0/e.getDistance());
setTurnRadarRightRadians(雷达角);
//敌人使用的火力
双enemyPower=en-e.getEnergy();
如果(enemyPower 0&&!cw(75,false)){
//他们好像开枪了
cd();
}
//创纪录的新能源
en=e.getEnergy();
//如果我们离得够近,就绕着他们转,如果我们离得太近,就走开
setTurnRightRadians(normalRelativeAngle(e.getBearingRadians()+Math.PI/2D));
setTurnGunRightRadians(normalRelativeAngle(absBear-getGunHeadingRadians)()-
Math.asin(e.getVelocity()*Math.sin(Math.PI-absBear+e.getHeadingRadians())/Rules.getBulletSpeed(Rules.MAX_BULLET_POWER));
//开火!
setFire(最大子弹威力规则);
//全速前进!
设置超前(dir*32);
}
Hitwall上的公共无效(Hitwall事件e){
//out.println(“啊!一堵墙!”);
cd();
}
私有布尔d(双d){
如果(d<150){
//我们离机器人很近(150像素以内)
如果(!rbt){
//我们还没有逃离机器人,所以我们改变方向吧
cd();
}
返回true;
}
返回false;
}
私有布尔cw(int-d,布尔cw){
如果(getX()
我不确定您是否检查了其他答案,但请检查以下链接
你可以尝试很多东西
希望有帮助。快速修复方法是删除
导入静态robocode.util.Utils.*
(在Java 1.5中引入了构造导入静态,请参见此处:)并使用Utils.normalRelativeAngle
等
一个合适的解决方法是找出为什么将源代码级别设置为小于1.5的值在Robocode编译器选项中添加以下注释:
-source 1.5
->编译器选项
[-deprecation-g-source 1.5-encoding UTF-8]
您是如何编译的?哪个命令或IDE?我选中了,但在这个链接中是针对使用Eclipse进行编译的人的,我使用的是Robocode程序。