游戏中寻找学习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);
}
}
}
网友评论