教你玩Robocode(5)——调试技巧

我们可以使用三种方式调试Robocode:

1. 通过输出监视程序

这是最简单高效的调试方法,在你的代码中加入System.out.println(…)或System.error.println(…),并通过输出监视你的代码。

所有的系统输出都会输出到Robocode的监视器中,在战场上,点击屏幕右侧某个坦克名称按钮,你可以打开Robocode监视器:

image

2. 通过DEGUG方式进行调试

搞Java的都知道,可以在Eclipse中打断点,以便Debug。我们如果想要Debug自己的坦克,只需要打上断点,然后以Debug方式启动Robocode就OK了。

3. 通过在战场上绘制进行调试

这是Robocode最有特色的调试方式,通过这种方式,你可以达到如下调试效果:

image

每次我都被jk.mega.DrussGT这个坦克(上图中间黄色的那家伙)所震撼!这个坦克是我从网上下载下来的。上图中的DrussGT坦克向屏幕上绘制了以坦克为圆心的园,绘制了预期对方的运动轨迹,绘制了敌方子弹可能覆盖的范围(深蓝色线)。DrussGT坦克实在是非常聪明,非常强大!它沿着优美的弧线快速移动,别人几乎无法摸到他,但同时,它又能根据对手的运动方向和速度预期对手的运动轨迹,并进行带有提前量的攻击!

也许这些都和我们今天要说的无关。我想说的只是,屏幕上纷繁的调试线条,是如何绘制的。

其实并不复杂。在Robot类中,有一个事件方法叫做onPaint(Graphics2D g)。我们可以在这个方法中,利用该方法传入的Graphics2D对象在战场上进行绘图。如下坦克实现了当发现对手时,标出对手的位置以及在自己和对手之间画一条直线:

最终效果如下:

Shows some paintings (a red line and square) on the battleview, where the robot debug.Tracker has spotted the sample.Crazy robot

但要注意的是,在默认情况下,游戏是不开启onPaint事件的。要开启onPaint事件,需要你在监视窗口点击Paint按钮。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值