JAVA编程实战:坦克大战系列3-坦克组成部分

游戏中寻找学习JAVA的乐趣之

坦克大战系列3-坦克组成部分

前言

本篇让大家更详细的了解坦克的结构。

坦克组成部分

Robocode中的Robot分为三部分:Body、Gun和Radar

Body – 坦克的主体部分,枪和雷达都是装在Body上面的。Body主要是控制坦克的移动(前进、后退、左转、右转)。

Gun – 安装在Body上面,用来发射子弹打击敌人,可以左右旋转调整炮筒的瞄准方向。

Radar – 安装在Gun上,用来在移动中搜索敌人的位置。雷达可以左右旋转,扫描敌人。

坦克的编写

利用这三个部分,我们来实现以下功能:

反复执行以下 动作

坦克前进100px

坦克后退100px

坦克右转90度

坦克左转60度

坦克炮管右转60度

雷达右转30度

import robocode.Robot;

public class MyFirstTank extends Robot {

@Override

public void run() {

while(true){

ahead(100);

back(100);

turnRight(90);

turnLeft(60);

turnGunRight(60);

turnRadarRight(30);

}

}

}

通过以上函数大家是不是一下子发现了很多关于Robocode内部的函数,而且这些函数是什么作用看函数名便一目了然,那么接下来,你试试能不能实现以下功能需求吧,作为咱们学习的练习呦。

练习:

编写一个坦克,在战场上以五角星的轨迹运行。先沿着红色AB线前进,然后沿着绿色BD前进,转向沿着蓝色DE前进,转向沿着黄色EC前进,转向沿着紫色CA前进。周而复始

通过上面的案例及练习,我们发现了虽然没有移动炮与雷达,但是我们发现在移动车身的过程中,炮与雷达也跟着一起移动了,这显然不符合日常生活中我们所遇到的坦克,那么如何让三部分独立呢?

同样的为了设计坦克更加灵活自如的运动,发明者当然会设定一些函数帮助咱们实现上面所说的问题。

雷达、炮、车身三者独立

使坦克车身与炮管脱离关系

setAdjustGunForRobotTurn(true)

使坦克雷达与炮管脱离关系

setAdjustRadarForGunTurn(true)

使坦克车身与雷达脱离关系setAdjustRadarForRobotTurn(true)

以上便是我们对于坦克组成部分的一些讲解,下一节将会对Robocode中更为复杂的参数为大家做详细的分析,敬请期待吧!

好啦,本期内容就到这里喽,我是不会玩游戏却非得写游戏的陈老师,一起来学习JAVA吧!

附五角星坦克实现代码:

package com.qf.tank;

import robocode.Robot;

public class StarTank extends Robot {

@Override

public void run() {

//五角星运动轨迹

//将坦克转向与X轴平行

turnRight(90-getHeading());

ahead(100);

while(true){

turnRight(144);

ahead(100);

}

}

}

你可能感兴趣的:(JAVA编程实战:坦克大战系列3-坦克组成部分)