java机器人API学习笔记

robocode 部分 API 中文参考
ahead 向前
public void ahead(double distance)
Immediately moves your robot ahead (forward) by distance measured in pixels.
马上将你的机器人向前移动 以 distance 指定的 多少个像素
This call executes immediately, and does not return until it is complete, i.e. when the remaining
distance to move is 0.
这个函数会马上执行,并且直到完成了任务才返回,比如,当距离已前进完时。
If the robot collides with a wall, the move is complete, meaning that the robot will not move any
further. If the robot collides with another robot, the move is
complete if you are heading toward the other robot.
当机器人撞到墙时,动作也是完成了,意味着此时机器人将不再向前进。当你的机器人撞到
其它的机器人时,如果你是头部撞到其它的机器人时动作也就完成。
Note that both positive and negative values can be given as input, where negative values means
that the robot is set to move backward instead of forward.
记住正数和负数都可以作为距离的值, 当距离为负值时表示机器人向后退距离的绝对值个像
素。
Example:
比如:
// Move the robot 100 pixels forward
将机器人向前移动 100 个像素
ahead(100);
// Afterwards, move the robot 50 pixels backward
然后,向后移动 50 个像素 ahead(-50);
Parameters:
参数:
distance - the distance to move ahead measured in pixels. If this value is negative, the robot will
move back instead of ahead
distanse-向前移动的距离,单位是像素。如果其值是负数,机器人会用向后来代
替向前。
See Also:
可以参考:
back(double), onHitWall(HitWallEvent), onHitRobot(HitRobotEvent)
back 向后
public void back(double distance)
Immediately moves your robot backward by distance measured in pixels.
马上将你的机器人向后移动 以 distance 指定的 多少个像素
This call executes immediately, and does not return until it is complete, i.e. when the remaining
distance to move is 0.
这个函数会马上执行,并且直到完成了任务才返回,比如,当距离已前进完时。
If the robot collides with a wall, the move is complete, meaning that the robot will not move any
further. If the robot collides with another robot, the move is
complete if you are heading toward the other robot.
当机器人撞到墙时,动作也是完成了,意味着此时机器人将不再向前进。当你的机器人撞到
其它的机器人时,如果你是头部撞到其它的机器人时动作也就完成。
Note that both positive and negative values can be given as input, where negative values means
that the robot is set to move forward instead of backward.
记住正数和负数都可以作为距离的值, 当距离为负值时表示机器人向前进距离的绝对值个像
素。
Example:
比如:
// Move the robot 100 pixels backward
将机器人向后移动 100 个像素
back(100);
// Afterwards, move the robot 50 pixels forward
然后,向前移动 50 个像素 ahead(-50);
back(-50);
Parameters:
参数:
distance - the distance to move back measured in pixels. If this value is negative, the robot will
move ahead instead of back.
distanse-向后移动的距离,单位是像素。如果其值是负数,机器人会用向前来代
替向后。
See Also:
可以参考:
ahead(double), onHitWall(HitWallEvent), onHitRobot(HitRobotEvent)
getBattleFieldWidth 得到战场宽度
public double getBattleFieldWidth()
Returns the width of the current battlefield measured in pixels.
返回值为以像素为单位表示的当前战场的宽度
Returns:
the width of the current battlefield measured in pixels.
--------------------------------------------------------------------------------
getBattleFieldHeight 得到战场高度
public double getBattleFieldHeight()
Returns the height of the current battlefield measured in pixels.
返回值为能像素为单位的当前战场的高度
Returns:
the height of the current battlefield measured in pixels.
getHeading 得到自己的方向
public double getHeading()
Returns the direction that the robot‘s body is facing, in degrees. The value returned will be
between 0 and 360 (is excluded).
返回机器人面对的方向,用角度表示。返回值的范围是 0 到 360 之间(不含 360) 。
Note that the heading in Robocode is like a compass, where 0 means North, 90 means East, 180
means South, and 270 means West.
记住在机器人软件中的坐标系就像一个罗盘, 0 表示正北, 90 表示正东,180 表示正南,270
表示正西。
Returns:
the direction that the robot‘s body is facing, in degrees.
返回机器人面对的方向,用角度表示
See Also:
getGunHeading(), getRadarHeading()
getHeight
public double getHeight()
Returns the height of the robot measured in pixels.
返回机器人自己的高度,单位为像素。
Returns:
the height of the robot measured in pixels.
See Also:
getWidth()
--------------------------------------------------------------------------------
getWidth
public double getWidth()
Returns the width of the robot measured in pixels.
返回机器人自己的宽度,单位为像素。
Returns:
the width of the robot measured in pixels.
See Also:
getHeight()
getName 返回自己的名字
public String getName()
Returns the robot‘s name.
返回机器人自己的名字
Returns:
the robot‘s name.
--------------------------------------------------------------------------------
getX 得到 X 坐标
public double getX()
Returns the X position of the robot. (0,0) is at the bottom left of the battlefield.
返回值为机器人的 X 坐标, (0,0)坐标在战场的左下角。 (译者注:向右为 X 正向,向上为
Y 正向) 。
Returns:
the X position of the robot.
See Also:
getY()
--------------------------------------------------------------------------------
getY 得到 Y 坐标
public double getY()
Returns the Y position of the robot. (0,0) is at the bottom left of the battlefield.
返回值为机器人的 Y 坐标, (0,0)坐标在战场的左下角。 (译者注:向右为 X 正向,向上为
Y 正向) 。
Returns:
the Y position of the robot.
See Also:
getX()
run
public void run()
The main method in every robot. You must override this to set up your robot‘s basic behavior.
在每个机器人中的主方法。为了你的机器人有一些基本行为,你必须重写这个方法。
Example:
例如:
// A basic robot that moves around in a square
一个在一个正方形里反复行走的基本的机器人
public void run() {
while (true) {
ahead(100);
turnRight(90);
}
}
Specified by:
run in interface Runnable
可以行走的时候才会行走。
--------------------------------------------------------------------------------
turnLeft
public void turnLeft(double degrees)
Immediately turns the robot‘s body to the left by degrees.
马上将机器人向左转以 degrees 指写的度数
This call executes immediately, and does not return until it is complete, i.e. when the angle
remaining in the robot‘s turn is 0.
这个指令马上被调用,直到做完才会返回。比如,当角度已经转完时就会返回。
Note that both positive and negative values can be given as input, where negative values means
that the robot‘s body is set to turn right instead of left.
正数和负数都可以作为参数,是负数意味着会向右转,转动角度的大小是一样的。
Example:
// Turn the robot 180 degrees to the left
将机器人向左转 180 度。
turnLeft(180);
// Afterwards, turn the robot 90 degrees to the right
然后,向右转 90 度。
turnLeft(-90);
Parameters:
degrees - the amount of degrees to turn the robot‘s body to the left. If degrees > 0 the robot will
turn left. If degrees < 0 the robot will turn right. If
degrees = 0 the robot will not turn, but execute.
degrees- 机器人向左转动的角度的大小。如果 degrees>0,那么机器人会向左转,如果
degrees<0,那么机器人会像右转。如果 degrees=0,那么机器人不会转动,但指令还是执行了
的。
See Also:
可参考:
turnRight(double),  turnGunLeft(double),  turnGunRight(double),  turnRadarLeft(double),
turnRadarRight(double)
--------------------------------------------------------------------------------
turnRight 向右转
public void turnRight(double degrees)
Immediately turns the robot‘s body to the right by degrees.
马上将机器人向右转以 degrees 指写的度数
This call executes immediately, and does not return until it is complete, i.e. when the angle
remaining in the robot‘s turn is 0.
这个指令马上被调用,直到做完才会返回。比如,当角度已经转完时就会返回。
Note that both positive and negative values can be given as input, where negative values means
that the robot‘s body is set to turn left instead of right.
正数和负数都可以作为参数,是负数意味着会向左转,转动角度的大小是一样的。
Example:
// Turn the robot 180 degrees to the right
将机器人向右转 180 度。
turnRight(180);
// Afterwards, turn the robot 90 degrees to the left
然后,向左转 90 度。
turnRight(-90);
Parameters:
degrees - the amount of degrees to turn the robot‘s body to the right. If degrees > 0 the robot
will turn right. If degrees < 0 the robot will turn left. If
degrees = 0 the robot will not turn, but execute.
degrees- 机器人向右转动的角度的大小。如果 degrees>0,那么机器人会向右转,如果
degrees<0,那么机器人会像左转。如果 degrees=0,那么机器人不会转动,但指令还是执行了
的。
See Also:
turnLeft(double),  turnGunLeft(double),  turnGunRight(double),  turnRadarLeft(double),
turnRadarRight(double)
--------------------------------------------------------------------------------
doNothing 什么都不做
public void doNothing()
Do nothing this turn, meaning that the robot will skip it‘s turn.
在这一轮中什么都不做,其实也就表示机器人将退出这一轮的比赛。
This call executes immediately, and does not return until the turn is over.
这个指令会马上执行,直到这轮比赛结束才返回。
finalize 最后的事情
protected final void finalize()
throws ThrowableCalled by the system to ‘clean up‘ after your robot.
You may not override this method.
抛出一个 一个调用给系统,当你的机器人没了的时候,它会自动做一些清理工作。你不应
该重写这个方法。
Overrides:
finalize in class Object
Throws:
Throwable
--------------------------------------------------------------------------------
fire 开火
public void fire(double power) power 是开火时的能量,也即子弹的能量
Immediately fires a bullet. The bullet will travel in the direction the gun is pointing.
马上射出子弹。子弹会沿着枪口的方向前进。
The specified bullet power is an amount of energy that will be taken from the robot‘s energy.
Hence, the more power you want to spend on the bullet, the more energy is taken from your
robot.
指定的子弹力量会从你的机器人的能量里带走。因此,你设定的的子弹的能量越大,发射时
会从你的机器人里带走的能量也越多。
The bullet will do (4 * power) damage if it hits another robot. If power is greater than 1, it will do
an additional 2 * (power - 1) damage. You will get (3 * power) back if you hit the other robot. You
can call Rules.getBulletDamage(double) for getting the damage that a bullet with a specific bullet
power will do.
当子弹击中其它机器人时,会使那个机器人的能量损害 (4*power) 。如果设定的能量值大
于 1,还会使对方增加 2*(power-1) 的损害。当你的机器人击中其它机器人时,你会获
得 (3*power)的收益。你可以调用 Rules.getBulletDamage(double)来知道一个指定的子弹
能量能造成对方多大的损害(译者:当然,应该是指击中了对方时) 。
The  specified  bullet  power  should  be  between  Rules.MIN_BULLET_POWER  and
Rules.MAX_BULLET_POWER.
指定的子弹能量应该在Rules.MIN_BULLET_POWER 和Rules.MAX_BULLET_POWER两个值之间。
Note that the gun cannot fire if the gun is overheated, meaning that getGunHeat() returns a
value > 0.
请注意,当枪太热了的时候它就不能射击,意味此时 getGunHeat()返回值大于 0。
A event is generated when the bullet hits a robot (BulletHitEvent), wall (BulletMissedEvent), or
another bullet (BulletHitBulletEvent).
当子弹击中一个机器人,墙,或者另一粒子弹时,分别会产生 BulletHitEvent 事件,
BulletMissedEvent 事件,BulletHitBulletEvent 事件。
Example:
例如:
// Fire a bullet with maximum power if the gun is ready
当枪已经准备好时(不过热)射出一个最大能量的子弹
if (getGunHeat() == 0) {
fire(Rules.MAX_BULLET_POWER);
}
Parameters:
power - the amount of energy given to the bullet, and subtracted from the robot‘s energy.
power- 射击时给子弹的能量,并会从机器人中减去这个能量。
See Also:
fireBullet(double),  getGunHeat(),  getGunCoolingRate(),  onBulletHit(BulletHitEvent),
onBulletHitBullet(BulletHitBulletEvent), onBulletMissed(BulletMissedEvent)
--------------------------------------------------------------------------------
fireBullet
public Bullet fireBullet(double power)
Immediately fires a bullet. The bullet will travel in the direction the gun is pointing.
马上射出子弹。子弹会沿着枪口的方向前进。
The specified bullet power is an amount of energy that will be taken from the robot‘s energy.
Hence, the more power you want to spend on the bullet, the more energy is taken from your
robot.
指定的子弹力量会从你的机器人的能量里带走。因此,你设定的的子弹的能量越大,发射时
会从你的机器人里带走的能量也越多。
The bullet will do (4 * power) damage if it hits another robot. If power is greater than 1, it will do
an additional 2 * (power - 1) damage. You will get (3 * power) back if you hit the other robot. You
can call Rules.getBulletDamage(double) for getting the damage that a bullet with a specific bullet
power will do.
当子弹击中其它机器人时,会使那个机器人的能量损害 (4*power) 。如果设定的能量值大
于 1,还会使对方增加 2*(power-1) 的损害。当你的机器人击中其它机器人时,你会获
得 (3*power)的收益。你可以调用 Rules.getBulletDamage(double)来知道一个指定的子弹
能量能造成对方多大的损害(译者:当然,应该是指击中了对方时) 。
The  specified  bullet  power  should  be  between  Rules.MIN_BULLET_POWER  and
Rules.MAX_BULLET_POWER.
指定的子弹能量应该在Rules.MIN_BULLET_POWER 和Rules.MAX_BULLET_POWER两个值之间。
Note that the gun cannot fire if the gun is overheated, meaning that getGunHeat() returns a
value > 0.
请注意,当枪太热了的时候它就不能射击,意味此时 getGunHeat()返回值大于 0。
A event is generated when the bullet hits a robot (BulletHitEvent), wall (BulletMissedEvent), or
another bullet (BulletHitBulletEvent).
当子弹击中一个机器人,墙,或者另一粒子弹时,分别会产生 BulletHitEvent 事件,
BulletMissedEvent 事件,BulletHitBulletEvent 事件。
Example:
// Fire a bullet with maximum power if the gun is ready
当枪已经准备好时(不过热)射出一个最大能量的子弹
if (getGunHeat() == 0) {
Bullet bullet = fireBullet(Rules.MAX_BULLET_POWER);
// Get the velocity of the bullet
得到子弹的速度
if (bullet != null) {
double bulletVelocity = bullet.getVelocity();
}
}
Parameters:
power - the amount of energy given to the bullet, and subtracted from the robot‘s energy.
power- 射击时给子弹的能量,并会从机器人中减去这个能量。
Returns:
a Bullet that contains information about the bullet if it was actually fired, which can be used for
tracking the bullet after it has been fired. If the bullet was not fired, null is returned.
返回值:一个存放了一些关于子弹的信息的 Bullet 类型(如果子弹真的射出去了) ,这个返
回值可以用来在已经射出后跟踪子弹。如果子弹没能射出去,返回值会是 null。
See Also:
可以参考:
fire(double),  Bullet,  getGunHeat(),  getGunCoolingRate(),  onBulletHit(BulletHitEvent),
onBulletHitBullet(BulletHitBulletEvent), onBulletMissed(BulletMissedEvent)
--------------------------------------------------------------------------------
getGunCoolingRate
public double getGunCoolingRate()
Returns the rate at which the gun will cool down, i.e. the amount of heat the gun heat will drop
per turn.
返回枪的冷却速度,也就是说,枪的热量会每一轮减少一些。
The gun cooling rate is default 0.1 / turn, but can be changed by the battle setup. So don‘t count
on the cooling rate being 0.1!
枪的冷却速度默认是 0.1 每轮,但是可以被战斗时的安装设置改变。 所以不要将冷却速率
看作一定是 0.1!
Returns:
the gun cooling rate
返回值:
枪的冷却速率
See Also:
getGunHeat(), fire(double), fireBullet(double)
--------------------------------------------------------------------------------
getGunHeading 得到枪的方向
public double getGunHeading()
Returns the direction that the robot‘s gun is facing, in degrees. The value returned will be
between 0 and 360 (is excluded).
Note that the heading in Robocode is like a compass, where 0 means North, 90 means East, 180
means South, and 270 means West.
返回机器人的枪的指向的方向,用角度表示。返回值在 0 到 360(不含 360)之间。
请注意在机器人编程中指向就像一个罗盘, 在这里 0 表示正北, 90 表示正东, 180 表示正南,
270 表示正西。
Returns:
the direction that the robot‘s gun is facing, in degrees.
返回值:
机器人的枪指向的方向,会用角度表示。
See Also:
getHeading(), getRadarHeading()
--------------------------------------------------------------------------------
getGunHeat 得到枪的热度
public double getGunHeat()
Returns the current heat of the gun. The gun cannot fire unless this is 0. (Calls to fire will succeed,
but will not actually fire unless getGunHeat() == 0).
返回枪现在的热量。只有这个值为 0 时你才能开火。 (值不为 0 时调用开火的命令会成功,
但直到 getGunHeat() == 0 即枪的热度为 0 时才会真正执行) 。
The amount of gun heat generated when the gun is fired is 1 + (firePower / 5). Each turn the gun
heat drops by the amount returned by getGunCoolingRate(), which is a battle setup.
当枪开火时产生的热量是 1 + (firePower / 5)(译者:firePower 即枪开火时的能量) 。每一轮
枪都会减少 getGunCoolingRate()返回值的那么多热量,但那是一个战斗设置值。
Note that all guns are "hot" at the start of each round, where the gun heat is 3.
请注意,在每一轮开始时所有的枪都是热的,这时枪的热量为 3。
Returns:
the current gun heat
返回:
现在枪的热量
See Also:
getGunCoolingRate(), fire(double), fireBullet(double)
--------------------------------------------------------------------------------
getNumRounds
public int getNumRounds()
Returns the number of rounds in the current battle.
返回当前在当前的战斗轮数。
Returns:
the number of rounds in the current battle
返回当前在当前的战斗轮数。
See Also:
getRoundNum()
--------------------------------------------------------------------------------
getOthers
public int getOthers()
Returns how many opponents that are left in the current round.
返回当前这一轮中还有多少个对手。
Returns:
how many opponents that are left in the current round.
返回值:当前这一轮中还有多少个对手
getRadarHeading 得到雷达的角度
public double getRadarHeading()
Returns the direction that the robot‘s radar is facing, in degrees. The value returned will be
between 0 and 360 (is excluded).
Note that the heading in Robocode is like a compass, where 0 means North, 90 means East, 180
means South, and 270 means West.
得到雷达正对着的方向,用角度表示。返回值在 0 到 360(不含 360)之间。
请注意在机器人编程中指向就像一个罗盘, 在这里 0 表示正北, 90 表示正东, 180 表示正南,
270 表示正西。
Returns:
the direction that the robot‘s radar is facing, in degrees.
返回值:
雷达正对着的方向,用角度表示
See Also:
getHeading(), getGunHeading()
--------------------------------------------------------------------------------
getRoundNum 得到当前轮数
public int getRoundNum()
Returns the current round number (0 to getNumRounds() - 1) of the battle.
返回当前回合是第几回合,值的范围是[0, to getNumRounds() - 1],闭区间。
Returns:
the current round number of the battle
返回值:
当前的回合数
See Also:
getNumRounds()
--------------------------------------------------------------------------------
getTime 得到时间
public long getTime()
Returns the game time of the current round, where the time is equal to the current turn in the
round.
A battle consists of multiple rounds.
返回当前回合的时间,这个值和这个回合的 turn 值是一样的。
Time is reset to 0 at the beginning of every round.
在每一个回合时间被重新设置为 0。
Returns:
the game time/turn of the current round.
返回值:
当前回合的时间。
--------------------------------------------------------------------------------
getVelocity 得到速度
public double getVelocity()
Returns the velocity of the robot measured in pixels/turn.
The maximum velocity of a robot is defined by Rules.MAX_VELOCITY (8 pixels / turn).
返回这个机器人的速度,以像素/一个时间单位为单位。 (译者注:在 robocode 中,turn 表
示为一个单位,可以认是一声滴答的时间) 。
Returns:
the velocity of the robot measured in pixels/turn.
返回值:
机器人的速度,以像素/单位时间为单位。
See Also:
Rules.MAX_VELOCITY
--------------------------------------------------------------------------------
onBulletHit 当击中对方时
public void onBulletHit(BulletHitEvent event)
This method is called when one of your bullets hits another robot. You should override it in your
robot if you want to be informed of this event.
当你的子弹击中对方时就会调用这个方法。 如果你想在子弹击中对方时作处理的话, 你应当
重写这个方法。
Example:
例如:
public void onBulletHit(BulletHitEvent event) {
out.println("I hit " + event.getName() + "!");
}
Specified by:
onBulletHit in interface IBasicEvents
这个方法的原始定义在 IBasicEvents 中
Parameters:
event - the bullet-hit event set by the game
参数:
event - the bullet-hit 游戏自己设置的(译者:这应当是默认的参数吧)
See Also:
BulletHitEvent, Event
--------------------------------------------------------------------------------
onBulletHitBullet 当子弹击中子弹时
public void onBulletHitBullet(BulletHitBulletEvent event)
This method is called when one of your bullets hits another bullet. You should override it in your
robot if you want to be informed of this event.
当你的子弹击中别人的子弹时这个方法会被调用。 如果你想在此时作一些处理, 你应当重写
这个方法。
Example:
例如:
public void onBulletHitBullet(BulletHitBulletEvent event) {
out.println("I hit a bullet fired by " + event.getBullet().getName() + "!");
}
Specified by:
onBulletHitBullet in interface IBasicEvents
原始定义在 IBasicEvents 中
Parameters:
event - the bullet-hit-bullet event set by the game
参数是游戏默认参数。
See Also:
BulletHitBulletEvent, Event
--------------------------------------------------------------------------------
onBulletMissed 当子弹迷路时
public void onBulletMissed(BulletMissedEvent event)
This method is called when one of your bullets misses, i.e. hits a wall. You should override it in
your robot if you want to be informed of this event.
当你的子弹迷路时就会调用这个方法,也就是说,此时你的子弹打到墙了。如果你想在此时
做一些处理,你应当重写这个方法。
Example:
public void onBulletHit(BulletMissedEvent event) {
out.println("Drat, I missed.");
}
Specified by:
onBulletMissed in interface IBasicEvents
Parameters:
event - the bullet-missed event set by the game
参数是游戏默认的参数。
See Also:
BulletMissedEvent, Event
--------------------------------------------------------------------------------
onDeath 当死了的时候
public void onDeath(DeathEvent event)
This method is called if your robot dies.
You should override it in your robot if you want to be informed of this event. Actions will have no
effect if called from this section. The intent is to allow
you to perform calculations or print something out when the robot is killed.
当你的机器人被消灭时这个方法会被调用。
如果你想在此时做一些处理, 你应当重写这个方法。 在这个区域写的所有的动作都没有任何
效果。这个函数的目的是允许你在机器人死的时候计算或是打印一些数据。
Specified by:
onDeath in interface IBasicEvents
Parameters:
event - the death event set by the game
参数是游戏默认的参数。
See Also:
DeathEvent, Event
onHitByBullet 当被击中时
public void onHitByBullet(HitByBulletEvent event)
This method is called when your robot is hit by a bullet. You should override it in your robot if you
want to be informed of this event.
当你的机器人被子弹击中时这个方法会被调用。 如果你想在此时做一些处理, 你应当重写这
个方法。
Example:
void onHitByBullet(HitByBulletEvent event) {
out.println(event.getRobotName() + " hit me!");
}
Specified by:
onHitByBullet in interface IBasicEvents
Parameters:
event - the hit-by-bullet event set by the game
参数是游戏的默认参数
See Also:
HitByBulletEvent, Event
--------------------------------------------------------------------------------
onHitRobot 当撞到别的机器人时
public void onHitRobot(HitRobotEvent event)
This method is called when your robot collides with another robot. You should override it in your
robot if you want to be informed of this event.
当你的机器人撞到别的机器人时,这个方法就会被调用。如果你想在此时做一些处理,你应
当重写这个方法。
Example:
void onHitRobot(HitRobotEvent event) {
if (event.getBearing() > -90 && event.getBearing() <= 90) {
back(100);
} else {
ahead(100);
}
}
-- or perhaps, for a more advanced robot --
或者也许对一个更高级的机器人,可以这样子:
public void onHitRobot(HitRobotEvent event) {
if (event.getBearing() > -90 && event.getBearing() <= 90) {
setBack(100);
} else {
setAhead(100);
}
}
The angle is relative to your robot‘s facing. So 0 is straight ahead of you.
这个角度(译者:此处应指 event.getBearing()返回的角度)和你的机器人的面向有关。所以
若是 0 的话就是在你的正前方。
This event can be generated if another robot hits you, in which case event.isMyFault() will return
false. In this case, you will not be automatically stopped by the game -- but if you continue
moving toward the robot you will hit it (and generate another event). If you are moving away,
then you won‘t hit it.
当另一个机器人撞到你时就会发生这个事件,此时 event.isMyFault()方法会返回 false 值。此
时,你不会被游戏自动停止行走。但是如果你继续向这个机器人前进的话你就会撞到它(然
后形成另一个事件) 。如果你离开,你就不会撞到它了。
Specified by:
onHitRobot in interface IBasicEvents
Parameters:
event - the hit-robot event set by the game
游戏默认的参数。
See Also:
HitRobotEvent, Event
--------------------------------------------------------------------------------
onHitWall 当撞到墙时
public void onHitWall(HitWallEvent event)
This method is called when your robot collides with a wall. You should override it in your robot if
you want to be informed of this event.
The wall at the top of the screen is 0 degrees, right is 90 degrees, bottom is 180 degrees, left is
270 degrees. But this event is relative to your heading, so: The bearing is such that turnRight
(event.getBearing()) will point you perpendicular to the wall.
当你的机器人撞到墙时这个事件会发生。 如果你想在些时做一些处理, 你应当重写这个方法。
在顶上的墙是 0 度,在右边的是 90 度,在左边的是 270 度, 。当是这个事件也和你的面向有
关,所以:turnRight (event.getBearing())调用会让你的机器人向墙垂直走。
Example:
void onHitWall(HitWallEvent event) {
out.println("Ouch, I hit a wall bearing " + event.getBearing() + " degrees.");
}
Specified by:
onHitWall in interface IBasicEvents
Parameters:
event - the hit-wall event set by the game
参数是游戏默认的参数。
See Also:
HitWallEvent, Event
--------------------------------------------------------------------------------
onRobotDeath 当其它机器人死时
public void onRobotDeath(RobotDeathEvent event)
This method is called when another robot dies. You should override it in your robot if you want to
be informed of this event.
当其它机器人被消灭时这个方法会被调用。如果你想做一些处理的话你应当重写这个方法。
Specified by:
onRobotDeath in interface IBasicEvents
Parameters:
event - The robot-death event set by the game
这是游戏默认的参数。
See Also:
RobotDeathEvent, Event
--------------------------------------------------------------------------------
onScannedRobot 当发现有其它机器人时
public void onScannedRobot(ScannedRobotEvent event)
This method is called when your robot sees another robot, i.e. when the robot‘s radar scan "hits"
another robot. You should override it in your robot if you want to be informed of this event.
(Almost all robots should override this!)
This event is automatically called if there is a robot in range of your radar.
当你的机器人发现了其它机器人时这个方法会被调用, 也就是此时你的雷达扫描到了其它的
机器人。如果你想在些时做一些处理,你应当重写这个方法。
(几乎所有机器人都应当重写这个方法! )
当有机器人进入你的雷达的范围时这个方法会被自动调用。
Note that the robot‘s radar can only see robot within the range defined by
Rules.RADAR_SCAN_RADIUS (1200 pixels).
请注意,机器人的雷达只能看到以 Rules.RADAR_SCAN_RADIUS(1200 像素)定义的范围。
Also not that the bearing of the scanned robot is relative to your robot‘s heading.
同时,扫描到的机器人的角度和你的面向无关。
Example:
void onScannedRobot(ScannedRobotEvent event) {
// Assuming radar and gun are aligned...
if (event.getDistance() < 100) {
fire(3);
} else {
fire(1);
}
}
Note:
请注意:
The game assists Robots in firing, as follows:
在开火时会有游戏帮助,规则如下:
If the gun and radar are aligned (and were aligned last turn),
and the event is current,
and you call fire() before taking any other actions, fire() will fire directly at the robot.
In essence, this means that if you can see a robot, and it doesn‘t move, then fire will hit it.
如果枪和雷达是对齐的(并且上一时刻也是对齐的) ,
并且这个事件是同时发生的,
并且在你调用 fire() 之前没有做其它任何动作,fire()会直接向那个机器人开火。
本质上说,这意味着如你扫描到了一个机器人,并且它不动,那么就会击中它。
AdvancedRobots will NOT be assisted in this manner, and are expected to examine the event to
determine if fire() would hit. (i.e. you are spinning your gun around, but by the time you get the
event, your gun is 5 degrees past the robot).
高级机器人不会以这个方式被帮助,它们想去检查这个事件看 fire()能否击中。 (也就是说,
你在旋转你的枪,但当你得到这个事件的消息时,你的枪与机器人偏离了 5 度) 。
Specified by:
onScannedRobot in interface IBasicEvents
Parameters:
event - the scanned-robot event set by the game
参数是游戏默认的参数。
See Also:
ScannedRobotEvent, Event, Rules.RADAR_SCAN_RADIUS
onWin 当胜利时
public void onWin(WinEvent event)
This method is called if your robot wins a battle.
Your robot could perform a victory dance here! :-)
当你的机器人赢了战斗时这个方法会被调用,你的机器人能在这时跳一个支胜利之舞!
Specified by:
onWin in interface IBasicEvents
Parameters:
event - the win event set by the game
参数值是游戏设定的
See Also:
WinEvent, Event
--------------------------------------------------------------------------------
scan 扫描
public void scan()
Scans for other robots. This method is called automatically by the game, as long as the robot is
moving, turning its body, turning its gun, or turning its radar.
Scan will cause onScannedRobot(ScannedRobotEvent) to be called if you see a robot.
扫描其它机器人。 这个方法是游戏自动调用的, 每当你的机器人在移动时, 转动它的身体时,
转动它的枪时,或是转动它的雷达时。
扫描会在看到一个机器人时调用 onScannedRobot(ScannedRobotEvent)方法。
There are 2 reasons to call scan() manually:
有两个要手动调用 scan()的原因:
You want to scan after you stop moving.
You want to interrupt the onScannedRobot event. This is more likely. If you are in
onScannedRobot and call scan(), and you still see a robot, then the system will interrupt your
onScannedRobot event immediately and start it from the top.
This call executes immediately.
在你停止移动时你想扫描。
你想中断 onScannedRobot 事件。这种似乎更有可能。如果你在 onScannedRobot 中调用
scan(),并且你仍看到一个机器人,那么系统会马上中断你的 onScannedRobot 事件,并从开
始处执行它。
这个调用会马上执行。
See Also:
onScannedRobot(ScannedRobotEvent), ScannedRobotEvent
--------------------------------------------------------------------------------
setAdjustGunForRobotTurn
public void setAdjustGunForRobotTurn(boolean independent)
Sets the gun to turn independent from the robot‘s turn.
使枪独立于机器人转动。
Ok, so this needs some explanation: The gun is mounted on the robot‘s body. So, normally, if the
robot turns 90 degrees to the right, then the gun will turn with it as it is mounted on top of the
robot‘s body. To compensate for this, you can call setAdjustGunForRobotTurn(true). When this is
set, the gun will turn independent from the robot‘s turn, i.e. the gun will compensate for the
robot‘s body turn.
好的,这就要一些解释了:枪是固定在机器人上的。因此,一般来说,如果机器人向右转
90 度 , 枪 也 会 因 为 架 在 机 器 人 上 而 转 动 。 作 为 一 种 补 偿 , 你 可 以 调 用
setAdjustGunForRobotTurn(true),当这个被设定时,枪会独立于机器人转动。
Example, assuming both the robot and gun start out facing up (0 degrees):
例如,设你的机器人和枪在开始时都向上(0 度角) 。
// Set gun to turn with the robot‘s turn
设置使枪和机器人一起转
setAdjustGunForRobotTurn(false); // This is the default 这是默认的
turnRight(90);
// At this point, both the robot and gun are facing right (90 degrees)
在这一点,机器人和枪都面向右边(90 度角) 。
turnLeft(90);
// Both are back to 0 degrees
都回到 0 度角
-- or --或者
// Set gun to turn independent from the robot‘s turn
设置使枪独立于机器人转动
setAdjustGunForRobotTurn(true);
turnRight(90);
// At this point, the robot is facing right (90 degrees), but the gun is still facing up.
在这一点,机器人面向右,但枪面向上
turnLeft(90);
// Both are back to 0 degrees.
它们都回到 0 度角
Note: The gun compensating this way does count as "turning the gun". See
setAdjustRadarForGunTurn(boolean) for details.
注 意 : 枪 独 立 的 这 种 方 式 被 认 为 是 转 动 枪 。 要 更 详 细 , 请 看
setAdjustRadarForGunTurn(boolean)
Parameters:
independent - true if the gun must turn independent from the robot‘s turn; false if the gun must
turn with the robot‘s turn.
independent - true 如果枪必须独立于机器人而转动;false 如果枪必须随着机器人转动。
See Also:
setAdjustRadarForGunTurn(boolean)
--------------------------------------------------------------------------------
setAdjustRadarForRobotTurn
public void setAdjustRadarForRobotTurn(boolean independent)
Sets the radar to turn independent from the robot‘s turn.
设置使雷达独立于机器人转动
Ok, so this needs some explanation: The radar is mounted on the gun, and the gun is mounted on
the robot‘s body. So, normally, if the robot turns 90 degrees to the right, the gun turns, as does
the radar. Hence, if the robot turns 90 degrees to the right, then the gun and radar will turn with
it as the radar is mounted on top of the gun. To compensate for this, you can call
setAdjustRadarForRobotTurn(true). When this is set, the radar will turn independent from the
robot‘s turn, i.e. the radar will compensate for the robot‘s turn.
好的, 这就要一些解释了: 雷达是固定在枪上的, 枪是固定在机器人上的。 因此, 一般来说,
如果机器人向右转 90 度,枪也会因为架在机器人上而转动,雷达也一样。因此,如果机器
人向右转 90 度,那么枪和雷达会一起转,因为雷达因定在枪上。作为一种补偿,你可以调
用 setAdjustGunForRobotTurn(true),当这个被设定时,枪会独立于机器人转动。
Example, assuming the robot, gun, and radar all start out facing up (0 degrees):
例如,设你的机器人和枪,雷在开始时都向上(0 度角) 。
// Set radar to turn with the robots‘s turn
设置使雷达和机器人一起转
setAdjustRadarForRobotTurn(false); // This is the default 这是默认的
turnRight(90);
// At this point, the body, gun, and radar are all facing right (90 degrees);
在这一点,机器人和枪,雷达都面向右边(90 度角) 。
都回到 0 度角
-- or --或者
// Set radar to turn independent from the robot‘s turn
设置使雷达独立于机器人转动
setAdjustRadarForRobotTurn(true);
turnRight(90);
// At this point, the robot and gun are facing right (90 degrees), but the radar is still facing up.
在这一点,机器人和枪面向右(90 度角) ,但雷达仍向上。
Parameters:
independent - true if the radar must turn independent from the robots‘s turn; false if the radar
must turn with the robot‘s turn.
参数
independent - true 如果雷达必须独立于机器人转动, false 如果雷达必须和机器人一起转动
See Also:
setAdjustGunForRobotTurn(boolean), setAdjustRadarForGunTurn(boolean)
--------------------------------------------------------------------------------
setAdjustRadarForGunTurn
public void setAdjustRadarForGunTurn(boolean independent)
Sets the radar to turn independent from the gun‘s turn.
使雷达独立于枪转动。
Ok, so this needs some explanation: The radar is mounted on the robot‘s gun. So, normally, if the
gun turns 90 degrees to the right, then the radar will turn with it as it is mounted on top of the
gun. To compensate for this, you can call setAdjustRadarForGunTurn(true). When this is set, the
radar will turn independent from the robot‘s turn, i.e. the radar will compensate for the gun‘s
turn.
好的,这就要一些解释了:雷达是固定在枪上的。因此,一般来说,如果枪向右转 90 度,
雷达也会因为架在枪上而转动。 作为一种补偿, 你可以调用 setAdjustRadarForGunTurn(true),
当这个被设定时,雷达会独立于枪转动。
Example, assuming both the gun and radar start out facing up (0 degrees):
例如,设你的枪和雷达在开始时都向上(0 度角) 。
// Set radar to turn with the gun‘s turn
设置使雷达和枪一起转
setAdjustRadarForGunTurn(false); // This is the default 这是默认的
turnGunRight(90);
// At this point, both the radar and gun are facing right (90 degrees);
在这一点,雷达和枪都面向右边(90 度角) 。
都回到 0 度角
-- or --或者
// Set radar to turn independent from the gun‘s turn
设置使雷独立于枪转动
setAdjustRadarForGunTurn(true);
turnGunRight(90);
// At this point, the gun is facing right (90 degrees), but the radar is still facing up.
在这一点,枪面向右,但雷达面向上
Note:  Calling  setAdjustRadarForGunTurn(boolean)  will  automatically  call
setAdjustRadarForRobotTurn(boolean) with the same value, unless you have already called it
earlier. This behavior is primarily for backward compatibility with older Robocode robots.
请 注 意 : 调 用 setAdjustRadarForGunTurn(boolean) 时 会 自 动 用 同 样 的 参 数 调 用
setAdjustRadarForRobotTurn(boolean) , 除 非 你 已 经 调 用 过
setAdjustRadarForRobotTurn(boolean)。这主要是为了向后兼容旧的机器人。
Parameters:
independent - true if the radar must turn independent from the gun‘s turn; false if the radar must
turn with the gun‘s turn.
参数
independent - true 如果雷达必须独立于枪转动, false 如果雷达必须和枪一起转动
See Also:
setAdjustRadarForRobotTurn(boolean), setAdjustGunForRobotTurn(boolean)
setColors 设置颜色
public void setColors(Color bodyColor,
Color gunColor,
Color radarColor)
Sets the color of the robot‘s body, gun, and radar in the same time.
You may only call this method one time per battle. A null indicates the default (blue) color.
同时设置机器人的身体,枪,雷达的颜色。
你每次战斗只能调用这个方法一次,参数为空的话就用默认的颜色(蓝) 。
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setColors(null, Color.RED, new Color(150, 0, 150));
...
}
Parameters: 参数
bodyColor - the new body color 身体的新颜色
gunColor - the new gun color 枪的新颜色
radarColor - the new radar color 雷达的新颜色
See Also:
setColors(Color,  Color,  Color,  Color,  Color),  setAllColors(Color),  setBodyColor(Color),
setGunColor(Color), setRadarColor(Color), setBulletColor(Color),
setScanColor(Color), Color
--------------------------------------------------------------------------------
setColors
public void setColors(Color bodyColor,
Color gunColor,
Color radarColor,
Color bulletColor,
Color scanArcColor)
Sets the color of the robot‘s body, gun, radar, bullet, and scan arc in the same time.
You may only call this method one time per battle. A null indicates the default (blue) color for the
body, gun, radar, and scan arc, but white for the bullet
color.
同时设置机器人的身体,枪,雷达,子弹,扫描的颜色。
你每次战斗只能调用这个方法一次,参数为空的话就为身体,枪,雷达,扫描角用默认的颜
色(蓝) ,但会为子弹用白色。
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setColors(null, Color.RED, Color.GREEN, null, new Color(150, 0, 150));
...
}
Parameters: 参数
bodyColor - the new body color 身体的新颜色
gunColor - the new gun color 枪的新颜色
radarColor - the new radar color 雷达的新颜色
bulletColor - the new bullet color 子弹的新颜色
scanArcColor - the new scan arc color 扫描角的新颜色
Since:
1.1.3
See Also:
setColors(Color, Color, Color), setAllColors(Color), setBodyColor(Color), setGunColor(Color),
setRadarColor(Color), setBulletColor(Color), setScanColor(Color),
Color
--------------------------------------------------------------------------------
setAllColors
public void setAllColors(Color color)
Sets all the robot‘s color to the same color in the same time, i.e. the color of the body, gun, radar,
bullet, and scan arc.
You may only call this method one time per battle. A null indicates the default (blue) color for the
body, gun, radar, and scan arc, but white for the bullet
color.
将机器人上所有物件设置为同样的颜色,包括身体,枪,雷达,子弹,扫描角。
你每次战斗只能调用这个方法一次,参数为空的话就为身体,枪,雷达,扫描角用默认的颜
色(蓝) ,但会为子弹用白色。
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setAllColors(Color.RED);
...
}
Parameters: 参数
color - the new color for all the colors of the robot 所有物件的新颜色
Since:
1.1.3
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setBodyColor(Color),
setGunColor(Color), setRadarColor(Color), setBulletColor
(Color), setScanColor(Color), Color
--------------------------------------------------------------------------------
setBodyColor 设置身体颜色
public void setBodyColor(Color color)
Sets the color of the robot‘s body.
A null indicates the default (blue) color.
设置身体的颜色
参数为空的话就用默认的颜色(蓝)
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setBodyColor(Color.BLACK);
...
}
Parameters: 参数
color - the new body color 身体的新颜色
Since:
1.1.2
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setAllColors(Color),
setGunColor(Color), setRadarColor(Color), setBulletColor
(Color), setScanColor(Color), Color
--------------------------------------------------------------------------------
setGunColor 设置枪的颜色
public void setGunColor(Color color)Sets the color of the robot‘s gun.
A null indicates the default (blue) color.
设置枪的颜色
参数为空的话就用默认的颜色(蓝)
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setGunColor(Color.RED);
...
}
Parameters: 参数
color - the new gun color 枪的新颜色
Since:
1.1.2
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setAllColors(Color),
setBodyColor(Color), setRadarColor(Color), setBulletColor
(Color), setScanColor(Color), Color
--------------------------------------------------------------------------------
setRadarColor 设置雷达的颜色
public void setRadarColor(Color color)Sets the color of the robot‘s radar.
A null indicates the default (blue) color.
设置雷达的颜色
参数为空的话就用默认的颜色(蓝)
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setRadarColor(Color.YELLOW);
...
}
Parameters: 参数
color - the new radar color 雷达的新颜色
Since:
1.1.2
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setAllColors(Color),
setBodyColor(Color), setGunColor(Color), setBulletColor
(Color), setScanColor(Color), Color
--------------------------------------------------------------------------------
setBulletColor 设置子弹的颜色
public void setBulletColor(Color color)Sets the color of the robot‘s bullets.
A null indicates the default white color.
设置子弹的颜色
参数为空的话就用默认的颜色(蓝)
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setBulletColor(Color.GREEN);
...
}
Parameters: 参数
color - the new bullet color 子弹的新颜色
Since:
1.1.2
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setAllColors(Color),
setBodyColor(Color), setGunColor(Color), setRadarColor
(Color), setScanColor(Color), Color
--------------------------------------------------------------------------------
setScanColor 设置扫描的颜色
public void setScanColor(Color color)Sets the color of the robot‘s scan arc.
A null indicates the default (blue) color.
设置扫描的颜色
参数为空的话就用默认的颜色(蓝)
Example:
// Don‘t forget to import java.awt.Color at the top...
不要忘记在顶上导入 java.awt.Color
import java.awt.Color;
...
public void run() {
setScanColor(Color.WHITE);
...
}
Parameters: 参数
color - the new scan arc color 扫描的新颜色
Since:
1.1.2
See Also:
setColors(Color, Color, Color), setColors(Color, Color, Color, Color, Color), setAllColors(Color),
setBodyColor(Color), setGunColor(Color), setRadarColor
(Color), setBulletColor(Color), Color

  

时间: 2024-11-05 14:47:28

java机器人API学习笔记的相关文章

Java集合框架学习笔记之集合与Collection API

一.CollectionAPI 集合是一系列对象的聚集(Collection).集合在程序设计中是一种重要的数据接口.Java中提供了有关集合的类库称为CollectionAPI. 集合实际上是用一个对象代表一组对象,在集合中的每个对象称为一个元素.在集合中的各个元素的具体类型可以不同,但一般说来,它们都是由相同的类派生出来的(而这一点并不难做到,因为Java中的所有类都是Object的子类).在从集合中检索出各个元素是,常常要根据其具体类型不同而进行相应的强制类型转换. Collection

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

Java Object类学习笔记

看下Api文档的一些说明 public class Object Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Since: JDK1.0 从JDK1.0就已经存在的元老类,类结构的根,所有类的父类,所有类都实现了这个类的方法,包含

Java多线程技术学习笔记(二)

目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和wait的区别 停止线程的方式 守护线程 线程的其他知识点 一.线程间的通信示例 返目录回 多个线程在处理同一资源,任务却不同. 假设有一堆货物,有一辆车把这批货物往仓库里面运,另外一辆车把前一辆车运进仓库的货物往外面运.这里货物就是同一资源,但是两辆车的任务却不同,一个是往里运,一个是往外运. 下面

java/android 设计模式学习笔记(12)---组合模式

这篇我们来介绍一下组合模式(Composite Pattern),它也称为部分整体模式(Part-Whole Pattern),结构型模式之一.组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别.这个最典型的例子就是数据结构中的树了,如果一个节点有子节点,那么它就是枝干节点,如果没有子节点,那么它就是叶子节点,那么怎么把枝干节点和叶子节点统一当作一种对象处理呢?这就需要用到组合模式了. 转

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

java/android 设计模式学习笔记(2)---观察者模式

这篇来讲一下观察者模式,观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统.订阅--发布系统等.因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖.以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦,观察者模式此时就派上用场了. PS:对技术感兴趣的同鞋加群544645972一起交流. 设计模式

java/android 设计模式学习笔记(5)---对象池模式

这次要介绍一下对象池模式(Object Pool Pattern),这个模式为常见 23 种设计模式之外的设计模式,介绍的初衷主要是在平时的 android 开发中经常会看到,比如 ThreadPool 和 MessagePool 等. 在 java 中,所有对象的内存由虚拟机管理,所以在某些情况下,需要频繁创建一些生命周期很短使用完之后就可以立即销毁,但是数量很大的对象集合,那么此时 GC 的次数必然会增加,这时候为了减小系统 GC 的压力,对象池模式就很适用了.对象池模式也是创建型模式之一,

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过