今日突然重新对Robocode发生了兴趣,为了能够更好的理解机器人的行动。开始研究Robocode的源代码。 从RoboWiki上的命令行启动一文中,可以得到Robocode总体的一个入口所在。
这个class就是包含了main()方法的入口class。 找到main()方法,读之,发现如下代码:
追踪进去查看,得到这样的内容:
可见,其中robocodeMain.invoke(null, (Object) args); 一句为关键。 跟踪robocodeMain,发现为Method类型。于是向前查其初始化之处。在init()方法中找到如下代码:
从上面的代码可以看出,robocodeMain这个对象所对应的是main对象所代表的class中的robocodeMain()方法。main对象本身是Class的实例。至此,main对象成了关键,向前追查,找到:
真相大白,main对象所代表的类是net.sf.robocode.core.RobocodeMainBase。 可是这个类在哪里呢?它的robocodeMain()方法又是什么样子呢? 睡一觉,下次有空的时候继续追查…… |
|
来自: richsky > 《robocode》